@schuttsmcsnw: Rather than `toString()`ing right away, we'll want to store the statement and `toString()` it JIT, at the last possible moment. This allows the statement to be modified later, if desired, and, more importantly, allows parameterized SQL to work (as long as `opts` is passed into `toString()`). Here's a test that should fail with the current setup, but should pass if `toString(opts)` is called JIT:

```javascript
checkParams(select().from('usr').where({'name': 'Roy'})
  .union(select().from('usr').where({'name': 'Moss'})),
  'SELECT * FROM user usr WHERE name = $1 UNION SELECT * FROM user usr WHERE name = $2',
  ['Roy', 'Moss']);
```