Adding support for single tags and ref tags.

Intermediate commit before I stat major refactoring.
Renames LSTART/LEND to BIN_START/BIN_END. Adds UNI_TAG.

1) Renames the lstart and lend tags to bin_end and bin_start, so that
they can serve as more than just latex tags. They will be used for all
binary tags, which are tags with an opening and closing tag.
2) Updates references in lstart and lend in tests, parser, etc.
3) Starts adding support for UNI_TAGS, but this is incomplete. The lexer
tokenizes them, but the parser doesn't yet handle them.
4) Started adding the codegen stage for the new {%ref%} tags.
5) Added some tests for these changes.
Starts adding parsing for unary tags. Fixes tests.

1) The parsing stage now creates UnaryTag nodes.
2) The code generation stage handle UnaryTags, but just sends it through
the same logic as the binarytags.
3) Fixes the unit tests that were broken by all the renaming.
Rewrites lmparser to handle unary tags.

1) There was a issue with Unary tags and how they were handled in the
pervious version of the parser. The previous version expected the token
stream to always alternate between Latex tags (now BinTag) and Markdown
tags. Unary tags broke then invariant, so I had to write a real parser
instead of a cheap hack ;)
2) New parser is a stack based parser. Tags are pushed onto the stack
and popped off based on certain rules. By the time the end of the token
stream is reached, the stack is an AST. Pretty neat.
3) Updated tests to conform to the new parser. New ones still need to be
written to test the UnaryTag functionality.
Inching closer to supporting nested tags.

1) lmparser now supports parsing nested binary tags... in theory. This
still needs to be tested thoroughly.
2) the BinTag node has been reworked. No longer are the arg attrs used
to hold raw_match (there's a separate field for that now). Also has a
'children' attr to support the nested binary tags.
lmparser wraps strings inside BinTags with Str nodes.

1) Rather than leaving strings inside BinTags naked, they are now
wrapped in lmast.Str nodes. This allows me to bundle metadata with each
string, such as its line number.
2) Updated lmparser tests, and added a few for nested binary and unary
tags.
3) Added a dump function in lmast for duming ASTs. Simply calls repr on
the ast and a string repr is dumped out.
Nested tag support complete. Adds tests. This is damn cool.

1) mdcodegen and tagparser now support nested tags. Rather than
iterating over a flat list, the AST is now reduced with a post order
map.
2) lmparser now has 98% test coverage! Cool! The only line that's
missing is one that should never actually get executed.
3) latexgen and refgen now return Markdown nodes, so the entire AST will
eventually get reduced to Markdown nodes.
4) tagparser supports function names with dashes.
Token regexes build themselves from tagplugins.

1) No need to manually modify the tag regexes. They are now
automatically generated from the list of tag plugins.
Fixes bug with nested tags in latexgen and refgen.

1) latexgen and refgen now look at all the children handed to them.
2) Started adding tests for mdcodegen.
References are linked to the footer and vice versa. Adds tests.

1) The references are now linked to the footer and vice versa. Clicking
the reference brings you to the footer, and click in the footer brings
you to the reference.
2) Added many functional tests and moved the ones that are supposed to
throw errors to the 'error' sub dir.
Breaks former latex tag into math, picture, etc tags.

1) New tags are math, picture, displaymath, pre, and doc.
   math and display math are for inline and regular equations.
   picture is for the picture environment in LaTeX.
   pre sets the latex document's preamble.
   doc feeds arbitrary latex into the latex interpreter.
2) Fixes bug in lmlexer, where "!" weren't accepted in tag arguments.
   Now everything but "%}" is allowed inside the tags. For now %} always
   terminates a tag. Unfortunately, no way to escape the sequence.
3) Splitting the tags up has broken the tests. Will have to fix this
   soon.
First stab at documentation. Removed picture tag. Renamed doc to latex.

1) Wrote some docs. Boy was that a slog. Should probably polish at some
   point.
2) Removed the picture tag because it wasn't playing nice with dvipng.
   Changing the lengths of objects in the picture didn't seem to do
   anything.
3) Renamed the doc tag to latex.
Fixed README typos.
Getting ready for release 0.2.0.

1) Fixed broken tests.
2) Updated version, and README.
3) Updated CHANGES.
4) Removed picture tag. Couldn't get it to play nice with dvipng.
5) Bugfixes:
    - latex tag no longer hangs on empty input. Throws error instead.
    - Tags can now be empty, and a blank image will be generated.
    - Refs now generate a nonce if there's no filename.
    - Many escapes no longer crashes the parser.
Merge branch 'development'