Add support for all query types

* Add rules for all new methods.
* Create lists of possible clauses for each query type.
* Create lists of minimum required clauses for each query type.
* Add `modify` clause for arbitrary modifications (`INSERT INTO`, `SELECT SQL_COUNT_ROWS`, etc).
* Remove `allowIncomplete` constructor flag; replace with `buildIncomplete` method.

Replaces #5 
Erm.. I mean that from the failure message I have no idea *which* iteration of this loop it failed on (There are 20 or 30 tests here). Opening the file doesn't help. When debugging you'd have to go add logging commands or a custom failure message to the assertion so we might as well do that up front.