cleaned up static functions with a rollback mechanism by using macros in DBAgentSQLite3.

The reason why we use a little strange notation that adds
'{' and '}' by the macros is to make developers conscious what
the code between TRANSCATION_PREPARE() and TRANSCATION_EXECUTE()
is in a block.

For example, the following code with the macros will cause
a build error due to a missing of a at the return line.

  TRANSCATION_PREPARE(dbPath, db);
  int a = foo();
  TRANSCATION_EXECUTE(db);
  return a;

However, it is natual for C/C++. So we introduced the convetion
that uses a block. The C/C++ developers would think the following
code is wrong because the definition of 'a' is in a block.

  TRANSCATION_PREPARE(dbPath, db) {
    int a = foo();
  } TRANSCATION_EXECUTE(db);
  return a;