optimisation of DBTable class and other small changes
- avoid repeatedly preparing max(ROWID), BEGIN, and COMMIT statements
- sqlite3_finalize is now not called for these operations operations - the
  destruction of the SQLiteStmtPtr for those operations takes care
  of calling sqlite3_finalize
- use .append instead of += where possible in DBTable
- check for pre-existing column name instead of just the object pointer
  when adding columns to tables
- add more checks in DBTable methods to return early if there is no work
  to be done
- minor header guard fixes
fix memory leak in unit test