Refactored SqlSyntax and SqlExecutor to be separate components, and added a DefaultSqlExecutor which (hopefully) most consumers can use directly