DataCloneError in on('populate') didnt abort DB

A new unit test "Error in on('populate') should abort database creation"
added that trigger the error that is fixed in this checkin. The error is
that if an IDB operation throws an IDB exception during the
on('populate') event, this did not assure that the database creation
request was aborted. The reason was that since the exception occurred
directly, the Promise implementation would do a setTimeout() or
setImmediate() to launch the reject(), but the IDB implementation would
not abort the transaction due to an exception. Result was that 1)
Database successfully created (despite exception was thrown). 2)
reject() callback comes to late to tell we have failed.

The fix is implemented in Transaction._promise() and makes all operation
become surrounded by try/catch. If error occur, it will immediately fire
the trans.on.error() event and abort the transaction. Catching such an
operation where the IDB implementation throws exception wont prohibit
transaction from aborting. This is a limitation we have to live with for
now. Note that these kinds of exceptions only occur when you dont follow
the specification of IDB, whilst error event may happen depending on the
existing data, so catching these kinds of errors shoud not be that
desirable since they should always be fixed by correcting the code
rather than the data you put in.

If we want to fix so that catching these kinds of exceptions would also
prohibit transaction from aborting, that would be possible if we lock
the transaction, launch a dummy IDB request and fire the error from the
dummy request callback instead. That way we would keep the transaction
alive and let the caller decide whether the error should lead to an
abort() or not. However, such a fix is not included here.
More clear error message when db.open failed

If you perform an operation that is rejected due to an earlier error
occurred in on('populate'), upgrade or on('ready') the error message
should be clear that your operation is not where the error originated
but the error originated when opening the database.

It could be quire confusing otherwise when debugging the code in the
wrong place.
Revert "More clear error message when db.open failed"

This reverts commit f2420a7c800b81f3dbe5fefc15abbaa6065e4f8e.
Revert "Revert "More clear error message when db.open failed""

This reverts commit c53b105a89569c3ec10fdc92584b17cd53a0481b.