Add support for multicolumn unique validators

Unique validator now supports a set of different syntaxes:
InstrumentedAttribute object, eg. User.name, or
 Column object, eg. user.c.name, or
 a field name, eg. 'name' or
 a tuple of InstrumentedAttributes, eg. (User.name, User.email) or
 a dictionary mapping field names to InstrumentedAttributes, eg.
 {
        'name': User.name,
        'email': User.email
}