organize code in Asciidoctor module; optimize block match

- put all code inside an Asciidoctor module block
- move debug operations into Debug submodule
- optimize block matching by using a single regexp
- add support for fenced code blocks
simpler while loop, add source_lines method to Document
resolves #103 include document title when header/footer disabled

- unset the notitle attribute to enable <h1> at top of embedded output
resolves #163 support :doctype and :backend keys in options hash

- also add test to ensure that doctitle can be set using :doctitle: attribute