Enhances support for the prepare/bind/execute query workflow,
making it easier to write Dependency Injection (DI) resistant code.
This change introduces a Query abstract class, implemented by PDOQuery,
with the following methods:
- query: executes the query and returns a PDODatabaseResult
- withValue and bind: sets a parameter value or bind it to a variable
- bindInOutParameter: sets a parameter for stored procedure calls
The PDOQuery instance is created by the PDOEngine class,
which calls the prepare() method with an SQL query as its argument.
While PDO directly calls all methods on the statement class, this
engine/query/result separation improves the overall separation of concerns.
Ref T2169