Many exceptions & transactions related updates.

* Begin using acid.errors classes.
* Introduce Store.in_txn() to run a function inside a transaction as
  necessary. May remove this again.
* Use Store.in_txn() for get_info2(), set_info2(), so Collection
  constructor works outside a transaction.