Supporting eventstores: volatile, datetime cutoff, continuous

Adds three new EventStore implementations:
- one volatile event store that keeps events in an ArrayList,
- one read-only that cuts of the event stream, only returning events older than a specified datetime
- and one continuous that joins two EventStores, appending one EventStore after the other.

They all support event visiting, but do no support criteria filtering.

All three combined, they can be used to set up a test/staging environment that loads events from production, "freezes" that event stream on time of application boot ignoring any new production events, and any new staging events can be appended to a volatile event store which is lost/reset on application restart.

Adds dependency on assertj-core for test assertions.

This is what I mentioned to you at JavaZone.
Just took me a some time to remember it and create this patch.