ISPN-2549 Invalidation mode caches with pessimistic transactions may result in stale remote locks

* In transactional mode, InvalidationInterceptor.invalidateAcrossCluster() should not just send a bare InvalidateCommand to the other nodes. The invalidate command should be wrapped in a PrepareCommand so it executes in a transaction and locks can be acquired and release appropriately.  

* EntryWrappingVisitor must also visit InvalidateCommands. This was not needed until now because invalidation was never executed in tx.

Also fixes ISPN-2173 "NPE when using XA enlistment without recovery"
* If recovery is not enabled the call to forget() must be no-op instead of failing due to NPE.

JIRA: https://issues.jboss.org/browse/ISPN-2549, https://issues.jboss.org/browse/ISPN-2173

Please integrate in master.