resolves #804 rewrite extensions to support extension instances

- rewrite extensions to support extension instances
  - class names, class instances and blocks are supported for every kind of extension
- document extension APIs
- introduce DSL for configuring extensions
- add named group registration
- add require library flag, -r, to cli for custom requires
- add convenience methods on extension processor for creating various nodes
- support lamba as process method
- move all DSL methods to DSL classes
- allow extension group or extensions registry to be passed to document
- rename name dsl method to named; add helper method to parse content
- refactor extension in Rakefile to work with new extension API
- document extension APIs, use methods to retrieve all extensions
- add default content model map to simplify Block creation
- allow subs to be overridden in block constructor
- add content_model option for macros to disable attribute parsing
- allow empty target for block macro
- add name_positional_attributes alias to pos_attrs option
- rename methods to import dsl, update docs
- don't output style on open block if nil, add missing endlines
- pass attributes to Processor#parse_content
- clear attributes if no block is dropped, update default content model map
- duplicate attributes passed to processor; change return nil to return
- add create method for example
- add caption based on presence of <context>-caption attribute
- move image postprocessing to generic location
- add extension tests and docs
- optimizations:
  - replace more calls to .nil? with truth checks
  - remove duplicate lookup of source in constructor
  - optimize caption assignment
  - cache path resolver
  - change order of truths in reader and document
Merge pull request #890 from mojavelinux/issue-804

resolves #804 rewrite extensions to support extension instances