SQLA default set with text() throws an exception. 

Here's an example of code I'd like to support automatically:

```python
class User(Base):
    __tablename__ = 'user'
    id = Column(BigInteger(unsigned=True), default=text("uuid_short()"), 
                primary_key=True, autoincrement=False)
```

Currently this throws an exception because it sets the default on the integer field as the string "uuid_short()".  I assumed that if you were using a text() function that you're calling some method on the SQLA backend so I default to leaving the field blank and not making it required (so if the user leaves it blank the default text() will be used instead).

Are there cases I'm not thinking of where this would break?