Move to closest to target and closest to source if we can't reach target.
Refactor pathing to avoid unecessary shift & deep recursion.
Merge pull request #18 from mickylad/issue#16

Issue#16