Occupying feature (e.g. soldier "occupy" Garrison)

NOTE: I merged from master and I don't think there's any merging issues. However my laptop gives me heap space error when compiling StartGUI and generating the map (it's the same even when I'm running the master branch). So I think the merge should be find yet I can't find a way to test it

Reverse occupy strategy
changed IOccupiable into Can or CannotBeOccupied, so that it can store the list of occupiers and and the type of Units that can occupy.
changed Can or CannotOccupy into type information stored in occupiable objects.

Create game unit manager, so that Occupying units can probably "disappear" from camera (not detectable - not visible, can't shoot, can't be shot)

Create action for occupying units to reappear on camera.