Fix crash when ps/source filtering.

We can't assume Msg here is going to be a msg record since
`logplex_utils:parse_msg` can sometimes return undefined for log lines
that don't match our pattern. Need to pull apart the record format
inside the match so we can fall down to the catch-all.

This should see the 500s we're sometimes seeing with filtered
tails. (the --ps or --source argument)
What about breaking the fun declaration out?

```erlang
filters([{<<"source">>, Source}|Tail], Filters) ->
    FilterFun = fun (#msg{source=Source}) -> true;
                          (_) -> false
    end,
    filters(Tail, [FilterFun | Filters]);
```