Added reset logic and better commenting

Added logic to randomize the model when the game is reset, and added an
event to the MemoryBoard model to broadcast when the model has changed.

Also added some extra commenting to describe what each method is
responsible for.