[WIP] [RFC] EventStore management

Allows events to be pulled out of the EventStore using a fluid criteria builder.

- includes a CallableEventVisitor, so event's can be easily processed using a callback function.
- no tests as of yet
- beyond the Axon implementation, added ability to query a property using `beginsWith`, `contains` and `endsWith`. In DBAL implementation, this correlates with `LIKE` statements.

Example of usage:

```php
<?php
$visitor = new CallableEventVisitor(function (DomainMessage $domainMessage) { /* do something */ });
$criteriaBuilder = $eventStore->newCriteriaBuilder();
$type = $criteriaBuilder->property('type'); // corresponds to column in events table
$criteria = $type->beginsWith('MyBoundedContext.AggregateRoot1.')->orWith(
    $type->beginsWith('MyBoundedContext.AggregateRoot2.')
);
$eventStore->visitEvents($visitor, $criteria);
```

*Heavily* based on AxonFramework's implementation.