Refactor engine code

I found this the most effective refactor. Main markup loop parses
the entire text buffer line by line. For each line, all the rules
are applied to that line.

Rules have been grouped into different kinds. For instance,
emph, strong, del or code are inline rules. They match against a
delimiter that acts as start and end point (**demo**, _demo_...)

The point of this structure is that now is easy to add new rules
provided you know how to group them. If no group is valid you can
add a new function for parsing that rule.
Parse ATX headers

An ATX header line consists of 1 to 6 '#' symbols, followed by
some more text. That text is the header title. Some examples:

    # This is a level 1 title
    ## This is a level 2 title
    ### This is a level 3 title
    #### This is a level 4 title
    ##### This is a level 5 title
    ###### This is a level 6 title
    ####### This is NOT a title

Standard Markdown doesn't require a space to be added between
the # symbol and the header title. However, like many tools (such
as Pandoc), Focus will require a space, as it would be too easy
to have a # at the beginning of a line that doesn't act as a
header.
Add strikethrough text

~~strikethrough~~. Another inline style. This is easy, man :)