Add Transaction.interrupt() to the Transaction API

Our first contribution to the kernel \o/.

This allows the user to interrupt a transaction, which is a more
forceful mode of failure that not only marks the transaction as failed
(i.e. such that it will be rolled back) but also causes any subsequent
kernel operations contained within that transaction to throw
an exception.

This functionality will be used as a user-facing query termination
facility.

Signed-off-by: Stefan Plantikow <stefan.plantikow@neotechnology.com>
Writes to a non-volatile field/non-atomic-reference are not guaranteed to be seen by any other thread according to the java memory model. So making this a regular field might break the interrupt() functionality for some transaction out of the blue. If we are concerned about the performance of this, let's rather add the counter and only check the volatile every xy operations.  This should mitigate the overhead.

Regarding the enum/atomic reference: we'll look at that, I think we where after the CAS of atomic reference to be able to upgrade from failing to interrupted but maybe a volatile is enough here. We're giving it a try now.