Update Source Tree for Version 2

This is the beginnings of a major refactor. Don't expect the tree to work that well or the tests to pass at the moment.
Beginnings of Parser

Split the file into the three main sections and partition the definitions from
the options in the header section.
Refactor Parsegen

This sketches out the intentions for the refactor. Most of the important bits
are implemented except for the printing (some kind of formatter objects are
probably required) and the calculations of the first and follow sets.
Add Initial Support for Nullable, First and Follow

Symbols now have support for setting and checking their nullability. There are
also methods to manipulate their first and follow sets.
Add First Set Computation

Now correctly (to my knowledge) computes the first sets for each symbol. Also
correctly fills in the nullable field on symbols as it goes along. Still needs
the follow sets to be computed.

This is pretty much a direct port of the code from the original Parsegen.
Begin Outputting Grammar

Most of the code is here. Some tweaking will be needed to define the required
variables. Also needs to properly deal with actually parsing things in the
switch statement.
Expand Symbol Expansion Output

Output now includes all of the things that are required for the final version.
The file has now got _really_ big. It will need to be broken down into a set of submodules.
Split into Modules

Move the contents of the main file into a set of submodules.
Fix File Modes
Ignore Build Directory
Update URL and Add Docs

Initial documentation is added. This is in the `ronn` format for generating into
man pages with the `ronn` tool. More stuff will be  added later.
Ignore Distribution Files
Add Grammar Object

Skeleton implementation of Grammar object. Some of the parsing stages will be moved into the new object to help simplify things.
Finish Grammar Refactor

Split the parsing from the grammar specific computation. This is now performed
by instance methods on the `Grammar` object. This means we don't have to pass
a whole load of context around all the time, which is good.

One refactor that jumps out from this is to make the name of a symbol available
as a member variable.
Fix Script

Script now uses the `Grammar` class.
Simplify Grammar Looping Condition
Fix Noobfesting

we still need the changed variable to accumulate changes in the iterations.
Start Refactor on Output

Pass the grammar directly to the output function. Need to create the output
context object next. This will be responsible for holding all the variables
relating to the output of things.
Move Output Processing to Member Functions

Output Context member functions are now responsible for all of the output. This
will need refactoring more when the new options implementation is in place.
Add Namespace Class

Responsible for allowing easier read access to options.