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 
The trouble with tests like this is that you can't tell from the stack trace *or* the message where the failure was.

In general, I've taken to extracting the logic into a single closure, then turning the above array into a series of `$test(['replace])` so the stack trace has all the data you need to find out what failed.