various changes towards cache clustering:

- lazy-loaded entities are cached using a new constant LOAD_LAZY as value instead of null. reason: some cache implementations don't allow null values (and null is not an explicit value either)
- key instances are no longer cached - the benefit of this is negligible, and prevents serializing cached values
- store is now an event emitter, and emits a "commit" event containing the objects modified during a transaction
added the array containing the storable/collections keys modified during
a transaction to the "commit" event data too (might be handy for
invalidation messages send around)
fixed circular dependency woes by not using destructuring assignment when
requiring storable module in collectorgenerator

LOAD_LAZY constant is now again a Storable constructor property
commit event data now contains only the keys of storables touched in a transaction.
this should be sufficient for invalidation messages.
bugfix: make sure the entity of a lazy loaded storable is fetched from database
before persisting any modifications

changed user-facing storable constructor to start with an empty object entity
instead of undefined - now Store.getEntity() is only called if the storable is
lazy-loaded.
fixed check for commit event listeners
forcibly evict the collections of a removed storable
this ensures that such collections are part of the commit
event data
removed debugger statement