Implemented client connection management

Now the clients can choose the transaction semantic they want.
The clients that manage their connection are responsible for
calling the connection commit and close methods.