resolves #79 extension API for document processing

- preprocessors filter lines before parsing
- treeprocessors run on document after parsing
- postprocessors run on rendered output
- block processors handle blocks with custom names (i.e., styles)
- block macro processors handle custom block macros
- inline macro processors handle custom inline macros
- introduce some optimizations and parsing cleanups
- add new files to gemspec
extension improvements

- make Preprocessor operate on Reader instead of just lines
- add template_name to Inline; make property writable for all node types
- add a finalize_header method to handle preparing to parse body
- spec out idea for preserialize processor
- update tests
Merge pull request #563 from mojavelinux/block-extensions

resolves #79 extension API for document processing