Fix an unsoundness bug around transactions
Fix an unsoundness bug around transactions

The `Transaction` type would be invalidated if it were ever moved around in
memory because one field contains a borrow to another. Fixed by adding a layer
of `Box` or a stable address.

Susurrus/crates.io,rust-lang/crates.io,achanda/crates.io,steveklabnik/crates.io,Susurrus/crates.io,achanda/crates.io,rust-lang/crates.io,steveklabnik/crates.io,achanda/crates.io,rust-lang/crates.io,Susurrus/crates.io,steveklabnik/crates.io,rust-lang/crates.io,steveklabnik/crates.io,achanda/crates.io,Susurrus/crates.io