Clean up tests to use Query alias/subscript

Signed-off-by: Stephen Celis <stephen@stephencelis.com>
Optional changes around Database.lastChanges and Query.{update,delete}

 1. Database.lastChanges will no longer return an optional. We could
    still scope it by checking totalChanges > 0, but it doesn't seem
    worth it for that one case. This gives us a bit more flexibility.

 2. Query.update and Query.delete now return optional Ints for changes.
    This makes it easier to check if a statement succeeded or not using
    `if`-`let`, and it makes it easier to run fire-and-forget statements
    by simply tacking on a `?` or `!`.

        // used for the flat map on an optional new ROWID, below
        let findByID: Int -> Query { users.filter(id == $0) }

        let alice = users.insert(email <- "alice@me.com").map(findByID)
        alice?.update(admin <- true)?
        alice?.delete()?

    Optionals make it easier to disambiguate inline.

Signed-off-by: Stephen Celis <stephen@stephencelis.com>
Conform statement to BooleanType

Makes it easy to use `if` for whether or not a statement ran and succeeded.

Ideally, this would also disambiguate Query.{insert,update,delete}, but
it does not (rdar forthcoming).

Signed-off-by: Stephen Celis <stephen@stephencelis.com>