2-step movement.

[UPDATED]   org.jetbrains.annotations -> javax.annotation
[IMPROVED]  Movement now happens in two steps, first step calculates path, user can check it, then execute it later on.