Haskell lint and related changes

- indent with 4 spaces
- delete unused functions
- add "test" argument
Add tests for the future roadmap
Genericize CodexList and things into CxList

* Use parametric CxList instead of CodexList and CodexOutput
* Combine "reader" and "writer" into functions turning CxLists into
  other CxLists, and parse them as such
Use ViewPatterns instead of ugly ArgTokens

* For now, hack "to" in by reading and ignoring it
Move everything to pattern matching
Implement "strip" and "only"