Added support (and unit tests) for Batch Commands.

I have added support for batch SQL statements (#14) - by which i mean where you have more than 1 statement in the SQL string and they are seperated by semi colon terminators.

A breakdown:

1. Created 3 new unit tests (passing): 'TestBatch_TerminatorPersists', 'TestBatch_MultipleInserts' and 'TestBatch_MixtureOfStatementsWithSemiColons'. 
2. Added the Terminator to the TokenRegistry.
3. Extended the grammar to allow optional terminators to be used with commands.
4. New BatchBuilder class (ICommand implementation that wraps a list of ICommands in the batch)
5. Extended BuilderVisitor class with visit method to visit BatchBuilder and implented this method in the FormattingVisitor class.
6. Added a HasTerminator property to the ICommand interface, and implemented this in the Derived ICommand classes. CommandBuilder build methods now detect a Terminator match and set this property on the ICommand appropriately.
7.  CommandBuilder.GetCommand behaves as before by returning the individual command if there is a single SQL statement, however if there are multiple statements, it returns a BatchBuilder instance which then contains the various ICommands in the batch.
8. Minor amendment to Parser class. It previously assumed that once it matched a single expression it was done and if there were any remaining tokens then it was setting IsMatched to false. I have tweeked this to allow for parsing multiple expressions in the same token stream.

Think thats about it..

Don't take these changes - I had to amend this file to publish my own temporary version of the NuGet package.