add transaction context manager when we create a topic and a post

When a new topic is created, if an error occurs during the post's save method, we stay with DB registered topic without any post. This state is not allowed by the pybb code and forum where the topic is created is not any more viewable (there are some other case where Eceptions are raised because of a topic without post).

The post's save method can raise an error for exemple when the parser raise an Error.

To keep the database integrity, we can use DB transactions. For Databases which does not support transactions, we delete the bad topic before to re-raise the Exception.