Make devserver record and present a detailed log of client events.

The devserver now stores a complete list of timestamped attributes, as
they are extracted from client messages. A log is indexed by client IP
addresses.  Each of the events in a client's log is a set of attributes
and values, including the type of the event, a status code, the reported
board and OS version, and a timestamp.  A dedicated HTTP API allows to
read client logs in JSON encoding.  Previous client tracking
functionality is preserved for backward compatibility.

TEST=Unittests; complete update cycle of a chromebook client over
a network connection.
BUG=chromium-os:25028

Change-Id: I579d2daf5bf925bd1a75e1a27585f62a59442967
Reviewed-on: https://gerrit.chromium.org/gerrit/14090
Commit-Ready: Gilad Arnold <garnold@chromium.org>
Reviewed-by: Gilad Arnold <garnold@chromium.org>
Tested-by: Gilad Arnold <garnold@chromium.org>
3 files changed