Save match data
Improved pre block matching

This is complete rewrite of the pre block matching routines,
with unit tests.  The previous implementation was inaccurate
and a drag on performance.  This should be much faster and
more accurate for pre blocks inside nested lists.

Use the four space rule for nested list items.  In a
sublist of level n, preformatted text must be indented
at least (n+1)*4 spaces.

Example:

   - List level 1 item 1
   - List level 1 item 2

     Second paragraph of item 2

        Nested pre block in item 2
        Four spaces past the marker

     Another paragraph of item 2

   - List level 1 item 3

       - List level 2 item 1
         Four spaces from higher-level the marker

            Nested pre block
            Four spaces past the previous marker

       - List level 2 item 2

           - List level 3 item 1

                 Nested pre block
Font lock and insertion for GFM quoted code blocks

Add `markdown-language-keyword-face' for highlighting the
optional language keyword.

Add `markdown-insert-gfm-code-block' for insertion, with
keybinding C-c C-s l (l for language).

Includes unit tests.

Thanks to Michael Dwyer, Donald Ephraim Curtis, and Matus Goljer for
patches related to matching GFM code blocks.  Thanks to Matus Goljer
for the insertion function.
Added before and after export hooks.
Delete temporary file created by test.
Thanks
Inline code regexp: ensure following character is not a backquote
Make temp filename and visited file the same
Smarter spacing when inserting horizontal rules