Merge pull request #223 from rjbailey/timelapse

Clear breakpoints timeline fog as scanning progresses.
Rename TimelapseRecord to ReplayAction in the inspector protocol and backend.
Frontend: rename TimelapseRecording.allRecords to .actions
Frontend: change terminology from input "records" to input
actions. Keep records to refer to data points contained within a data
provider, such as the breakpoints provider.
Add loading/unloading of multiple recordings to the Inspector protocol.

This patch changes many things, but here are the important parts:

DeterminismLog now exposes a functor-based traversal API that iterates
over all actions in a specific queue. This replaces prior ad-hoc
iteration in the memory size calculation and action serialization code.

All other serialization code has been moved from DeterminismLog to
JSONActionSerializer, the only concrete serializer at present.

Several data types have been added to the Inspector API:
 * Timelapse.ReplayRecording
 * Timelapse.RecordingId

Several commands have been added to the Inspector API:
 * Timelapse.loadRecording
 * Timelapse.unloadRecording
 * Timelapse.getRecording
 * Timelapse.getAvailableRecordings

Several events have been added to the Inspector API:
 * Recording{Unloaded, Loaded}
 * Recording{Added, Removed}

DeterminismController and InspectorTimelapseAgent have been modified
to trigger these events through instrumentation and respond to the
commands. At present, these are basically stubs; neither have support
for multiple unloaded recordings.

DispatchableAction subclasses now optionally override isUserVisible().

Recording data remains streamed during capturing, but recording data
is sent en-masse when a recording is loaded. This exposed many
frontend bugs (which assumed streamed data), most of which were fixed.
The great renaming of March 2013: renames several important classes in
an effort to make the code more intuitive, and stop using "Timelapse"
as a synonym for Replay.

Some of the changes include:

DeterminismLog -> ReplayInputLog
DeterminismQueueType -> ReplayInputQueueType
DeterminismController -> ReplayController
ReplayableType -> ReplayInputType
ReplayableAction -> NondeterministicInput
DispatchableAction -> EventLoopInput
ActionSerializer -> ReplayInputSerializer
JSONActionSerializer -> JSONReplayInputSerializer
action -> input (more generally)
Frontend: Move non-view parts of CSSSelectorProfile to their own file.
Rename all the things: replace Timelapse with Replay throughout the
inspector frontend, backend, and protocol.
Frontend: rename ReplayModel.InputHit event to CursorChanged. This
event is now fired when the recording is loaded to move cursor to the
first input.

Closes #134.
Closes #225.
Frontend: un-break dragging of the replay cursors.

Closes #233.
Change ownership discipline for ReplayInputLog and ReplayRecording:
the raw log is owned by the recording, and the recording is
refcounted.

Uses of the input log must route through
ReplayController::loadedRecording().

Closes #228.
Restore CSS rule defining the restore-to-breakpoint button icon.