resolves #836 and #846

- use new Opal preprocessor guards (i.e., unless RUBY_ENGINE == 'opal')
- use unicode escape sequence for passthrough placeholders and null character
- fix several checks where a value is empty string instead of null in JavaScript
- consolidate opal_ext require to a single line
- move autoload declarations outside of Asciidoctor module block
- use qualified name for top-level classes in AbstractNode
Merge pull request #950 from mojavelinux/issue-836

resolves #836 and #846