New plugin architecture.

Plugins can be registered for new log formats.

Support old API that returns KeyError if line has no data
and should be ignored.

Support new API that can keep track of state. New API returns None if
line has no data and should be ignored, not KeyError.

Change-Id: I6b48a2a4bf70dd3d5d61ae4fd6c2db46ef0be675