Build events via a pointer instead of returning a new object

This fixes event loading. The old method was overwriting the contents of events.back() each time infile.next() was called.