Transaction now has limited support for PromotableSinglePhaseEnlistment

System.Transactions.Transaction is only partially implemented, and was lacking support for enlistments of type PromotableSinglePhaseEnlistment.
Specifically, this prevented usage of Npgsql with the ambient transactions feature (TransactionScope).

(merged from mono)
Sys.Tx: Avoid uncatched exceptions during Prepare phase, which might crash the whole application.

Also try to align internal exception handling flow/logic to the one found in MS.NET.

(merged from mono)
Updated and merged the windows phone test projects for System.Transactions:

 - using the new unit test project
 - combined the wp7 and wp8 projects into one