resolves #883 map null character to constant for Opal compatibility

- also move the declaration of the pass placeholder constants to Substitutors
Merge pull request #884 from mojavelinux/issue-883

resolves #883 map null character to constant for Opal compatibility
resolves #886 add time range anchor to video element
Merge pull request #887 from mojavelinux/issue-886

resolves #886 add time range anchor to video element
ignore .idea folder used by RubyMine
remove redundant character escapes in regexps
fix spelling error
refactor unit tests so they work in RubyMine

- explicitly add the test and lib directory to the load path
- switch to the project root before running tests
- add UTF-8 encoding magic header to all test files
- exclude .gem file at root of project (where RubyMine puts it)

This commit was modified from the original pull request by @mojavelinux
fix typo in capture group var assignment
resolves #804 rewrite extensions to support extension instances

- class names, class instances and blocks are supported for every kind of extension
- also add -r flag to cli for loading custom libraries
- add convenience methods on extesion processor for creating various nodes
- ...
support lamba as process method
named group registration, document register, move all DSL methods to DSL classes
allow extension group or extensions registry to be passed to document

- includes other cleanups within Document