HandleManager improvement

Changed the behavior of HandleManager such that after an index has used
up all its valid check values, it will be retired, and new handles will
never use that index again.

Previously, the oldest check values would have been reused, so after ~2
billion handles using the same index have been destroyed, there was a
possibility that an invalid handle might be considered valid but point
to a different object.

This likely wouldn't have been a problem, since it would likely take
days or weeks of continuous game time to reach this point (simply
creating and destroying a handled object over and over again takes
several minutes to reach 2 billion cycles on my machine) and even after
the rollover did happen, the chance of an actual collision would still
be low, since handles that are invalid because they are expired are
relatively rare, and the check value would still have to match exactly.
more doxy (almost done)