MySQLDatabase missing __init__ function, cannot set commit_select when constructing connection
> It seems to me that defaulting to NOT committing on all select queries should be the default since select is a non-mutating operation

I pushed a commit to remove it in master, which will be in the next release. I know with postgres the reason I was doing that was to avoid connections hanging idle in transactions. I'm honestly not sure if mysql requires similar logic, but you can remove it for the time being by subclassing `MySQLDatabase`:

``` python
class MySQLDatabaseNoCommit(MySQLDatabase):
    commit_select = False
```
 I'm going to revert this change as it has caused lots of confusion for MySQL users. Say what you will, but yeah, I think it's better for the users to not be confused. For the time being, you'll have to subclass MySQLDatabase and override the `commit_select` attribute:

``` python

class CustomMySQLDatabase(MySQLDatabase):
    commit_select = False
```

This is related to issue #431.

In order to use a cursor with MySQL and avoid an out of memory error, I need to use the `MySQLdb.cursors.SSCursor` class and disable commits on select.

It seems to me that defaulting to NOT committing on all select queries should be the default since select is a non-mutating operation, but it would be helpful to give the flexibility of overriding this value when instantiating the db connection.

In this specific case, by overriding the default cursor provided by the MySQL driver to `SSCursor`, I am changing the behaviour so that results are stored server-side and a call to `Database.execute_sql` attempts to execute a commit after initializing the cursor.

This results in the error: `Exception _mysql_exceptions.ProgrammingError: (2014, "Commands out of sync; you can't run this command now") in <bound method SSCursor.__del__ of <MySQLdb.cursors.SSCursor object at 0x10a706990>> ignored`

I can solve this problem by instantiating my connection as:

```
db = MySQLDatabase(
    'databasename',
    ...,
    cursorclass=cursors.SSCursor,
    commit_select = False,
)
```

However, `MySQLDatabase` does not have an `__init__` function and is defined as follows:

```
class MySQLDatabase(Database):
    commit_select = True
    .. more initialization of variables ..
```

Because of the above implementation, `commit_select` does not get set to `False` as I would expect. I suggest the following implementation instead:

```
class MySQLDatabase(Database):
    def __init__(commit_select=True, **kwargs):
        super(MySQLDatabase, self).__init__()
        self.commit_select = commit_select
        .. any other initialization ..
```
