C4ObjectList: Enhance the iterator class with additional functions and add reverse-order-iteration via reverse()
	In preparation of replacing manual linked list traversal of C4ObjectLists everywhere
C4ObjectList: Replace trivial cases of manual list traversal with iterator usage
C4Player: CursorLeft/Right: Instead of manual list traversal use iterator
C4EditCursor: Instead of manual list traversal use iterator
C4Object: Call Contents.GetLastObject() instead of accessing Last link directly
C4GameObjects: Use this instead of ::Objects
C4Game: Refactor CheckObjectEnumeration to not use manual list traversal
C4GameObjects: When shelving contents of InactiveObjects temporarily, make a copy instead of setting InactiveObjects.First
C4GameObjects: PostLoad sanity Contents check done with iterators instead of direct C4ObjectLink access
C4GameObjects: Sorting out objects with inactive state done with regular Remove/Add calls instead of manually doing linked list dance again
C4Object: ShiftContents done with iterators
C4ObjectList: Move First, Last to protected