fix getUncommittedEvents being used to also clear the uncomitted events

added the following methods to `AggregateRoot` and therefore to `EventSourcedAggregateRoot`:

- `hasUncommittedEvents`
- `clearUncommittedEvents`
@henrikbjorn arguably, the `should` should stay _because_ a test can fail

> **should** *verb* used to indicate correctness … indicating a desirable or expected state.

& given that so many existing tests include the word *should* I don't see the point in changing it.