Rework unit movement and attack range archiecture

Increase abstraction between unitController and unit by having unit
decide which spaces it can travel to relative to itself, not the
controller