ISPN-3583 When indexing is enabled but Query module isn't available configuration validation should fail

Reviving this commit after it was reverted by d6725ad00fcdfba6cc171db912ec2297f413f0ef
ISPN-3583 Use the proper classloader so this Query config validation can work in server too

If no classloader is specified then use the defining class loader of the current class. Previously, the classloader of Util class was used, which corresponds to commons module and consequently fails to load classes from query module.
ISPN-3583 Throw exception if 5.2 config activates indexing but query module is missing from class path
ISPN-3687 Upgrade to Apache Lucene 4.5.1
ISPN-3597 ClusterRegistry should provide event notifications

* Add methods addListener, removeListener
* Also add containsKey convenience method
Refactor ProtobufMetadataManager to use ClusterRegistry
Move method ProtobufMetadataManager.readStream to commons Util
ISPN-2143 Improve how different indexed caches sync up on new indexed types

* The known classes are no longer kept in a map in QueryInterceptor. They are added in the ClusterRegistry instead (in a unique scope per cache) so the information is automatically disseminated in the cluster.
* As a consequence, IndexUpdateCommand does not need to propagate the known classes info, this is already taken care of.
* QueryInterceptor.getKnownclasses method is removed as it's no longer needed
ISPN-2143 Reorganize fields in class
ISPN-3651 Allow @Listener classes to be non-public

It's better not to impose such a restriction.
JBQA-8509 - Fix ISPN code coverage profile
ISPN-3518 1PC can cause a window of inconsistency with L1 invalidation

* Changed 1PC L1 invalidation to be synchronous for invalidation in tx cache
* Also change L1LastChanceInterceptor to be sync in tx cache
* Added tests for 1PC TX as well
ISPN-3556 When LockControlCommand fails on an owner, the rollback command is not sent

* small issue with Pessimistic transactions but it works fine with Optimistics
transactions.

* refactor ControlledRpcManager and created a base abstract class for it.
ISPN-2475 When L1.onRehash is enabled, L1 invalidations should be sent
to the previous owners

* Changed L1 on rehash to properly add requestors for previous owners
* Reenabled tests for L1 on rehash to confirm working
* Removed unneeded looping in InvalidateL1Command as track modified keys