USERGRID-254: Use event system to clean-up stale indexes 

This branch implements Events https://issues.apache.org/jira/browse/USERGRID-254

When the Core module EntityManager deletes or updates Entities in the Collections module, the Query Index records for the old versions of that Entity need to be deleted. To enable this, we added an eventing system to the Collections module so that callers can hook into entity create, update and delete events.

And we added event handlers to clean up the Query Index records for those events.

See the new package in Collections module:
org.apache.usergrid.persistence.collection.event

And in Core:
org.apache.usergrid.corepersistence.events


One issue with this PR is the AbstractIteratingQueryIT, which now requires at least a 5ms write-delay or one of the tests will fail and then cause subsequent tests in other classes to fail too.
The reason for that is that the EntityDeletedHandler and other handers need access to the EMF and those handlers are created by Guice, so we need the EMF to be injectable -- BUT the one and only EMF instance is created by Spring.