Reverse method on event readers.

Related to #87.
Here's something I just noticed:

Even if we don't define a Reverse method ourselves, the following test passes by using LINQ's [built-in Reverse method](http://msdn.microsoft.com/en-us/library/vstudio/bb358497.aspx):

```c#
[Theory, AutoAtomData]
public void SutYieldsPagedEvents(
    [Frozen(As = typeof(ITypeResolver))]TestEventTypeResolver dummyResolver,
    [Frozen(As = typeof(IContentSerializer))]XmlContentSerializer dummySerializer,
    [Frozen(As = typeof(IAtomEventStorage))]AtomEventsInMemory dummyInjectedIntoSut,
    [Frozen]UuidIri dummyId,
    AtomEventObserver<XmlAttributedTestEventX> writer,
    LifoEvents<XmlAttributedTestEventX> sut, // <- LifoEvents
    Generator<XmlAttributedTestEventX> eventGenerator)
{
    var expected = eventGenerator.Take(writer.PageSize * 2 + 1).ToList();
    expected.ForEach(e => writer.AppendAsync(e).Wait());

    var actual = Enumerable.Reverse(sut); // <- Conceptually turned into FifoEvents.

    Assert.True(
        expected.SequenceEqual(actual),
        "Events should be yielded in a FIFO order");
    Assert.True(
        expected.Cast<object>().SequenceEqual(actual.OfType<object>()),
        "Events should be yielded in a FIFO order");
}
```