Changing the database layer so that the Query is responsible for binding values

Benefits:

* Less craziness, binding values should have been always placed at the query level
* Easier to test query objects
* Lots of removed code

Drawbacks:

* Slightly less "elegant" 
* New mandatory argument for `ExpressionInterface::sql()`