move filtering mechanism to separate class

Move filtering out to separate class, so this effectively becomes
another stack in the generator path. Doing so means we can
consistently apply filters to all the generators, regardless of
final format.

This also creates a more complex parser that can return a structured
logline object instead of just a string. While this is not taken
advantage of yet, the intent is the final display layer will be
able to stop parsing the lines entirely and just apply formatting
to the structured lines.

Change-Id: I245f1700afedfdffef86c225f3641eae4725fb6d