fix not checking resources when 1st segment of unit to remove is removed (regression caused by 8a456d5)
rename getMove() to activeMove(), getSegment() to activeSegment()
add activeSegments() iterator
use unit objects instead of unit indices in more places
improve equality checking and GetHashCode() in FP.Vector
add SegmentUnit struct to replace uses of KeyValuePair<Segment, Unit>
move several methods into SegmentUnit