Add CREATE/DROP TABLE schema helpers

CREATE TABLE uses a builder to create a table. Our usual example:

    db.create(table: users) { t in
        t.column(id, primaryKey: true)
        t.column(email, null: false, unique: true)
        t.column(manager_id, references: users[id])
    }
    // CREATE TABLE users(
    //     id INTEGER PRIMARY KEY,
    //     email TEXT NOT NULL UNIQUE,
    //     manager_id INTEGER REFERENCES users(id)
    // )

There are other table-level helpers for PRIMARY KEY (for composite
keys), UNIQUE, CHECK, and FOREIGN KEY (for UPDATE/DELETE hooks).

A few notes on foreign keys:

 1. The shorthand, `references:` only supports INTEGER PRIMARY KEYs
    right now. This is subject to change, but single primary keys are
    generally INTEGERs, so let's encourage it as a best practice for
    now. (It's still possible to use the `foreignKey` function to link
    non-integer keys.)

 2. Foreign keys do not work out-of-the-box with SQLite, as foreign key
    support is off by default. We'll probably want to enable them by
    default in the (near) future.

 3. Composite foreign keys are not supported (yet).

DROP TABLE omits the builder.

    db.drop(table: users)
    // DROP TABLE users

Both `create` and `drop` functions call `table` out as an explicitly
named parameter to both emphasize the action and provide room for INDEX
helpers (and, potentially, TRIGGER and VIEW helpers).

Neither yet support the IF NOT EXISTS clause. This wordiness doesn't
feel right as a named parameter.

Signed-off-by: Stephen Celis <stephen@stephencelis.com>
Add CREATE/DROP INDEX helpers

Index name is auto-generated.

    db.create(index: users, on: email, unique: true)
    // CREATE UNIQUE INDEX index_users_on_email ON users (email)

    db.drop(index: users, on: email)
    // DROP INDEX index_users_on_email

Partial indexes are available where applicable. At this time, Yosemite
ships with support; iOS does not.

    db.create(index: users.filter(verified), on: email)
    // CREATE INDEX index_users_on_email ON users (email) WHERE verified

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