Made AmbientTransactionContext aware of HttpContext and OperationContext instead of only using ThreadStatic context

Fixes bug when publishing and sending messages from a Web/WCF context
Throw exception if transaction is not started to avoid messages being dropped in the system dead letter queue
Fixed bug in WCF context wrapper
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
Merge pull request #203 from jasperdk/master

TransactionContext [ThreadStatic] and ASP.NET is actually a problem