Allow setting ColanderAlchemy options in sqlalchemy type

This allows for an extra location for customization of the schema inside a `column.type`. It looks for the `__colanderalchemy_config__` attribute in the type for customization. This allows for:

```Python
import colander
from sqlalchemy import Column, Integer, Unicode
from sqlalchemy.type import TypeDecorator
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Email(TypeDecorator):
    impl = Unicode
    __colanderalchemy_config__ = {'validator': colander.Email}

class User(Base):
    __tablename__ = 'user'
    id = Column(Integer, primary_key=True)
    email = Column(Email, nullable=False)
    second_email = Column(Email)

schema = SQLAlchemySchemaNode(User)

```
Being equal to the following colander schema:
```Python
import colander

class User(colander.MappingSchema):
    id = colander.SchemaNode(colander.Integer(),
                             missing=colander.drop)
    email = colander.SchemaNode(colander.String(),
                                validator=colander.Email())
    second_email = colander.SchemaNode(colander.String(),
                                       validator=colander.Email(),
                                       missing=colander.drop)
```

Where both email columns will be validated with `colander.Email`, but `email` will have missing required and `second_email` missing drop in the colander schema.
Can't really see how. As far as I can see, this part is only needed because now `kwargs` can have the value of the `type.__colanderalchemy_config__` dict. In the old code `kwargs` is always a dict with only the name item at this point, and the values from the `overrides` and `declarative_overrides` are only put into the `kwargs` dict at the end, overwriting any value already set.