3.0 - Sending Query object to drivers

This change allows the Query object to be passed to the driver. In some situations the driver needs to execute queries before/after the query and it will give more flexibility to do it.

For instance, in SQL Server the driver need to change the `IDENTITY_INSERT` before execute an insert when the query contains the primary key value. With the query object it can easily be done. A custom Statement class can trigger the query to revert the `IDENTITY_INSERT` configuration.