Big refactor:
- Fluent API for defining keys to ignore / include in trace
- Fluent API for defining types to ignore / include in trace
- Fluent API for defining formatters for type
- Formatters can be defined at a base type and derived types will be formatted
- Can enable / disable at runtime
- Can change entire configuration at runtime
- Optimization: caches when checking keys, types and getting type formatters
- No tests :trollface: