Encapsulate prepared statement into StatementExecution

`PreparedStatement` is passed through many classes and it involves several hacks in a few different classes. This PR tries to encapsulate `PreparedStatement`, which is a step in the direction of removing SQL generation or execution within fixture code.