Add type-safe SQL expression builder

A bit more declarative sugar for building queries, e.g.:

    // given
    let users = db["users"]
    let admin = Expression<Bool>("admin")
    let age = Expression<Int>("age")

    users.filter(admin && age >= 30).order(age.desc)
    // SELECT * FROM users WHERE admin && age >= 30 ORDER BY age DESC

    users.group(age, having: count(age) == 1)
    // SELECT * FROM users GROUP BY age HAVING count(age) = 1

Everything is an expression now, and depending on the type can interact
differently. This means we can now use bindings everywhere with little
effort.

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