Comment, docstring, and section housekeeping

Navigate between sections marked by ^L with C-x [ and C-x ].
Add indentation positions: preceding list markers and pre block position

Use new functions markdown-calculate-list-levels and
markdown-pre-indentation to add accurate positions of preceding list
items in current list and necessary indentation for creating a pre
block in the current context.  This simiplfies markdown-calc-indents
quite a bit.

Minor docstring updates for related functions.

Includes a unit test.
Rewrite list promotion and demotion functions

Use markers to avoid endpoint accounting.
Allow bounds to be provided if available.
Add a unit test for promotion and demotion.
Completion and cycling of headers and horizontal rules

Generic Promotion and Demotion:

Two new functions, markdown-promote and markdown-demote, handle
promotion and demotion of objects at the point.  These are bound
to C-r (right or raise) and C-l (left or lower) respectively.
Currently, these work on headers, horizontal rules, and list
items.  Alternate bindings are M-<right> and M-<left>, which
previously were used only for increasing and decreasing list item
indentation.

Generic Completion and Cycling:

Completion and cycling is carried out using C-c C-=
(markdown-complete-or-cycle).  This function will complete markup
of the object at the point, if it is deemed to be
incomplete (e.g., too few characters underlining a setext-style
header).  Otherwise, it will cycle forward (or backward, with C-u
prefix) through the possible levels.  Currently, this works with
headers and horizontal rules.

Completion and Regions:

Completion with an active region results in all objects in the
region being completed.  Another command, markdown-complete-buffer
(C-c C-c =), has been added for completing all objects in the
buffer.

Headers:

Completion of a header means normalizing the whitespace and
surrounding markup.  Any extraneous whitespace is removed from
the header text, leading and trailing hash marks are added or
equalized (atx headers), and underline characters are extended or
removed to match the text (setext headers).

Horizontal Rules:

The variable markdown-hr-string has been replaced by a list
markdown-hr-strings containing all possible horizontal rule strings to
cycle through.  By default, the first is inserted, but with a C-u
prefix, the last is inserted.  With a numeric prefix C-u n, insert the
n-th element, starting from one.

Completion of a horizontal rule means, check to see if the rule is a
member of markdown-hr-strings.  If so, leave it, otherwise, replace it
with the first string in the list.

Other Changes:

The names of markdown-promote-list-item and markdown-demote-list-item
have been reversed, since promotion actually means reduce the level
and demotion means to increase the level.

Includes unit tests.
Clarify toggling of bold and italic
Fix bold and italic insertion

Bounds function should return nil when there is no word at
point, triggering empty markup insertion.

Includes two new unit tests.
Italic and bold font lock bug fix

Update bold and italic regexps to prohibit newlines and tabs
immediately after the opening delimiters.  This fixes a bug
where italics would not be highlighted following a horizontal
rule.  Two tests are included.
Fix typo in comment
Clarify inline code toggling code
Bold and italic markup cycling via markdown-complete-or-cycle

This function shouldn't demote list items, however.

Includes unit tests.
List insertion tests
Movement by defun

Re-introduce beginning-of-defun-function and end-of-defun-function.

Includes unit tests.
Movement by block

Add new commands for moving to the beginning or end of a block.
These are markdown-beginning-of-block (M-[) and
markdown-end-of-block (M-]).

Includes tests.
Simplify markdown-footnote-text-find-new-location

With recently added functions, this can be simplified.
Includes new unit tests for footnote insertion, jumping,
and killing.
Move blank line logic to footnote insertion function
Combine buffer-substring and delete-region calls
Combine car of cdr calls with cadr
Fix killing footnotes with no text

When skipping over [:space:] at a footnote marker with no text,
this resulted in skipping over newlines.  Just skip spaces and
tabs.

Includes a unit test.
Clean up whitespace after deleting footnote text
Blockquote insertion with smart indentation, whitespace

Includes tests.