Refactor txnRunner usage

NewManagedStorage() now just requires a mgo.Database and ResourceStorage to be passed in.
The txnRunner is created fresh for each operation, thus preventing the possibility of stale sessions. It also is a better way to construct the managed storage instance, avoiding the need for the caller to know about txnRunners.