Get haas.model working with things besides sqlite 

This now at least populates the db with MySQL. I'm putting the do not merge label on this, because I want to test it more thoroughly against mysql first.

The main thing that was required was explicit length fields for string/varchar columns. Perhaps troublingly, the default behavior seems to be to silently truncate any values that are too big to fit. We should probably check this ourselves, which this doesn't do currently
Quoting henn (2014-12-19 20:32:41)
>    In [1]haas/test_common.py:
> >  def releaseDB(db):
> > -    """Do we need to do anything here to release resources?"""
> > -    pass
> > +    """Clean out the database, so it's empty for the next test."""
> > +    db.commit()
> > +    db = Session()
> > +    for cls in Model.__subclasses__():
> > +        db.query(cls).delete()
> > +    db.query(NetworkingAction).delete()
> > +    db.commit()
> 
>    Did you guys decide on something? I'm a little worried if someone
>    accidently called releaseDB while connected to a real DB that it would
>    nuke real data.

So iirc this doesn't actually work with MySQL anyway -- there are 
dependency issues, so you end up violating the schema part way through 
(we don't have the necessary cascade stuff set up).

More broadly though, I agree, this is a hazard. Thought: we need a way 
to configure the database specially for the test suite anyway, maybe 
whatever we do for that, we can hook into it to add some "are you sure"
warnings about the database before running the test suite.