Controlling access, pt. 1

[UPDATED]   Made all control and private data methods package-private or protected.
Controlling access, pt. 2

[UPDATED]   Double-check and fix up method accessors.
[FIXED]     Check cost of whole operation in Movement.execute().
[FIXED]     Check prerequisites in Leveling.execute().
[FIXED]     Better implementation of iterateObservableObjects + check against currentPlayer.
[REMOVED]   *Level classes in favor of just instantiating a Level with the desired LevelType.
Controlling access, pt. 3

[ADDED]     Security layer to allow players to authenticate themselves.
[REMOVED]   currentPlayer parameter on all 'authenticated' methods.  These methods now check for the current player with Security.
[ADDED]     Authenticated annotation on all methods that require the player to have authenticated themselves in advance.
Controlling access, pt. 4

[UPDATED]   More currentPlayer removed.
[UPDATED]   Methods where there's a useful difference between unknown and absent values now return Maybe.
[FIXED]     Regression: movement pathfinder didn't consider remainingSpeed anymore.
[FIXED]     Don't test accessibility when leveling: units may not be able to see where they're leveling to.  Accessibility will be enforced when executing.
[FIXED]     Unit tests to comply with new API.