Fixed a bug in the MockMarket class where mutated depth dictionaries got carried over between tests.
Added a regression test to make sure Market depths are restored after exiting a transaction, even when shared across MarketChains.
Now calling  outside of a transaction throws an exception instead of beginning a transaction. I didn't like the idea of it having such a non-obvious side-effect.