Stubbed out HasGameReachedTerminalState
Fixed missed assertions in unit tests
Plugged HasGameReachedTerminalState into program

After initially plugging it into the program, I expected to see the
initial state of the game being printed. It was not. I found this very
puzzling, and banged my head against it for a long time. It turned out
that the auto keyword in C++11 was tripping me up. It seems that if you
do this:
    int& x = 4;
    auto y = x;
Then auto expands to int, not to int&. I couldn't figure out why my heap
allocator wasn't heap-allocating messages, and it turns out it was
because it was not copying sanely. But I wasn't intending to have it be
copied at all! So second major learning: inject your dependencies,
idiot! Thus Bus(Router&, Channel&) became
Bus(Router&, Channel&, HeapAllocatorForSubtypesOf<Event>&).