Add markdown-footnote-kill (C-c C-f k)

Thanks to Joost Kremers <joostkremers@fastmail.fm>
Document markdown-footnote-kill
Dreaded white-space and indentation patch
Extract the functionality of the `markdown` function so that it can
more easily be reused by other functions.
Make function names use "preview" consistently.
Make the `markdown-export-file-name` function fallback to the buffer name.
minor fix to export standalone html
Add better highlighting for headers

Modified to keep (inline and reference) link highlighting unchanged.
add imenu ability
Thanks again to Donald Ephraim Curtis
Generalize imenu footnote expression
mark gfm-mode as autoload
Thanks
Disallow matching reference definition across multiple lines

Use [^^\n] to match the label in reference defition. If a URL is in the
begining of a line, all lines between it and the first URL definition
are rendered as reference defintion lable

e.g.

[Test][] url

here are all definition label

[Test]: http://example.com
Thanks
Improved imenu support

Many thanks to Akinori Musha <knu@idaemons.org> for the patch, with
the following notes:

I've written an imenu support function for markdown-mode.el, which not
only makes M-x imenu work but also enables the method/tag list feature
of speedbar and ECB.
Unbreak markdown-mode on XEmacs.

This fixes the most obvious places where it breaks, and gets us a
usable markdown-mode.
Avoid byte compiler warning about region-exists-p in GNU Emacs
Character set declaration in XHTML output
More comprehensive key bindings for header cycling

Bind <S-iso-lefttab>, <S-tab>, and <backtab> for greater
cross-platform compatibility.

Reference:
http://lists.gnu.org/archive/html/emacs-devel/2010-08/msg00061.html