This moves some logic from the `GARRISONED`-state in UnitAI's `GARRISON`-state to the `APPROACHING`-state of the same parent state where it seems more fit. Also a new state `GARRISON.GARRISONING` is created which holds some logic that seems unfit anywhere else.
It is strange why one would enter the `GARRISONED`-state, even when garrisoning would fail and then going back to the `APPROACHING`-state. Hence, range and the ability to garrison checks are now peformed earlier.