Reverse method on event readers.

Related to #87.
There's that. We *could* return something more specific (like currently proposed), which would obviously be a stronger guarantee, but also a more rigid contract. The question is if the client gains anything from receiving a `LifoEvents<T>` instance instead of `IEnumerable<T>`?

Another design implication worth considering is that by returning `IEnumerable<T>`, the compiler should pick `FifoEvents<T>.Reverse` over the [built-in Reverse method](http://msdn.microsoft.com/en-us/library/vstudio/bb358497.aspx).