More unknown states + IncompatibleStateException.

[UPDATED]   getObject(ID) now returns Maybe and unknown if you cannot see another player's object with the given ID.
[UPDATED]   canObserve now returns Maybool and UNKNOWN if the current player cannot observe the location.
[UPDATED]   Simpler event firing code.
[IMPROVED]  Avoid triggering notifications about ownership change when not changed.
[ADDED]     IncompatibleStateException when invoking actions that are not possible due to game state.