A bunch of new fixups

- Use a parser that we can affect the settings of instead
  of using the more generic publish* methods.
- Organize the code so that nested functions in max_line_length
  are at the top of the function and code is at the bottom (making
  it easier to read).
- Pass the filename to checking methods incase they want to use
  that filename to identify the source of the content.

Fixes issue #4