refactored Markdown class to use traits

all markdown features are now in a trait so composing new markdown
flavors is as simple as adding traits to the class.

Additionally this adds an abstract syntax tree.

This should enable the following things:

- make it easier to get in line with common mark #62
- [ ] should fix  #53 because the abstract syntax is generated for the complete language before any reference is accessed.
- allow implementing #28 easily using the absy and dropping/escaping all html.
no, I am not finished with this :)