Fix delete account will not update fullname of sub accounts

`destructiveDeleteAccount` and `recursiveDestructiveDeleteAccount` does call each other.

In `destructiveDeleteAccount`, full name of all sub accounts will be fixed.

All DB operations in delete are now put into a DB transaction, to keep Db integrity. All operations would be rolled back if an exception is thrown.

I forget why I push 5ec2ccf in this branch ... It does make calculation of opening balance faster.