refactored QueryBuilder into SelectBuilder, created separate builder classes for Insert/Update/Delete