added abstractions for query generators and schema information extractors, attempt to refactor SQlGenerator