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 }