separate attribute and code block parsers

Should let us deal with #3 easier. Affects #2 because of refactor.
r markdown parser example

might help with #2
use correct r magic. partial fix to #1

Previously, notedown was naively interpreting the language string in
the fenced code block as the string to use for the code block magic.

This was a problem for `R` as the code blocks are often marked

    ```r
    some r code
    ```

which renders as

    %%r
    some r code

whereas the ipython code cell needs the content

    %%R
    some r code

This commit adds an intelligent code magician that chooses the correct
magic for the language alias given. This can be extended to any
language and it will default just using the alias.
more helpful comments
attempt at extracting code pre processing. breaks tests