Disposing AmbientTransactionContext and IContext instances

To ensure TransactionContext is cleared on clear instead of when ASP.NET/WCF is clearing contexts
Reordered GetTransaction

To also check for state of MSMQ transaction in context - this is more important than to check for state of a new transaction
Reverting changes to AmbientTransactionContext and implemented hosting context management in TransactionContext - where it should be