Lower 2 log levels.
Make showing which keyword matched a thread work properly.
Redesign core.py.

- Initial commit, the code is pretty bad.
- A huge performance improvement, 5x for me.
  - Only touching every boards' json once, as opposed to
    doing so multiple times per match group.
    - Should scale very well as the amount of specified
      match groups/boards per match group increases.
  - Simply passing a Python object to cli.py instead of
    encoding it as YAML/json.
- A slight performance improvement in thread matching.
- Output threads are always sorted by board name now.
Update TODO.