Update lib/SqlFormatter.php

Introduce some micro-optimizations
Merge pull request #16 from stloyd/patch-1

Update lib/SqlFormatter.php
Another optimization.  Was performing an array merge for every format, changed it to only do it once.
Some code readability cleanup and additional micro-optimizations
Merge pull request #18 from stloyd/master

Some code readability cleanup and additional micro-optimizations
Implemented caching during tokenization.  Added a script for testing performance.  Bumped the dev version number.
Cleaned up documentation, improved performance test script and sample queries.
Major refactoring of code to improve performance.  Now using primarily regular expressions instead of loops.  2x performance increase.
Found and fixed a minor bug in the process. "1.00" was being counted as 3 separate tokens ("1", ".", and "00") instead of a single number token.
Added a simple regression testing script.
Fixed lots of formatting bugs and inconsistencies.  Rewrote the format method to better handle indentation.
Fixed a couple formatting bugs.  Added a few more optimizations.
Specifically:

- Fixed double newlines that were appearing in some cases
- Improved algorithm for inline parentheses.  Now "decimal(7,2)" and "(table.column) will be inline
- Fixed formatting bug with "ON UPDATE CURRENT_TIMESTAMP"
- Fixed bug with numbers followed immediately by quotes (e.g. 1"test")
- Reduced calls to highlightToken()
- Used if blocks instead of switch statement when deciding how to highlight token
- Used single quoted strings when possible to avoid parsing overhead
Fixing formatting bug when a special reserved word has multiple whitespace characters in the middle (e.g. "Group      By").
Small bug fix and version bump.
Removing "INSERT INTO" as a special reserved word.  It looks better if formatted as a regular reserved word.
Fixed formatting bug when 2 special reserved words immediately followed each other.
Added set operators to special reserved list (UNION, UNION ALL, EXCEPT, and INTERSECT).
Updated test sql list to reduce the number of similar queries and better reflect real world usecases.
Improved output of the regression test to make debugging easier.
Fixed bug with unterminated strings.
Changed behavior when a parse error is encountered.  It use to throw an exception, but now it just returns the remaining string as a single token.
Split highlighting logic for backtick quote and other quotes to make the code cleaner.
Making it easier to customize appearance.
Now, you can set whatever html attributes you want for each token type.  Previously you could only set the value of the style attribute.
You can also now set the html attributes for the containing pre tag.
These changes make it easy to use classes instead of styles for example.
Improving splitQuery method.  Fixes #22
Using class constants for token types and token components now.
Resulted in a ~35% reduction in memory use and a slight decrease in performance.
Fixing bug with parsing long strings.  PCRE was seg faulting.  Fixes #25
Fixed bug when formatting "SELECT#comment" without a space before "#".
Added PHPUnit tests and .travis integration.