Fix for transactions hanging and timing out if PreparingEnlistment.Done() is called

According to MSDN it is valid to call PreparingEnlistment.Done() without calling PreparingEnlistment.Prepared(). http://msdn.microsoft.com/en-us/library/system.transactions.preparingenlistment(v=vs.110).aspx

This is a quick fix for the above situation. PreparingEnlistment should also throw if both Done and Prepared are called but that's a bigger change....