Reverse method on event readers.

Related to #87.
The return type of `Reverse` doesn't have to be more specific than `IEnumerable<T>`.

Clients that use the `Reverse` method of an event reader should expect the same behaviour as `Enumerable.Reverse` but with better performance characteristics for long streams over slow storage systems.

We already have a test the verifies the behavior and we need another one that verifies the underlying implementation:
```c#
var expected = new LifoEvents<T>(id, storage, serializer);
IEnumerable<T> actual = sut.Reverse();
Assert.True(expected.Equals(actual));
```

To make the above test pass without test-specific equality or Custom Assertions we need to override `Equals`...

-----

The example code uses xUnit.net's `Assert.True(seq1.Equals(seq2))` because of [this](https://xunit.codeplex.com/workitem/9856) known xUnit.net issue.