Fixed GeoRange and SystemGeo allocation bug.

This bug was causing the SystemGeo buffer to get out of whack.
The cause of this bug was in the GeoRange's resize routine, it
was accidentally setting its internal "_size" value before calling
the SystemGeo's resize. The SystemGeo's resize was supposed to be
setting the updated size on the GeoRange.

This bug was being complicated by the fact that the GeoRange had
a complex interface involving knowing about when to allocate space
in the SystemGeo buffer.  This has been removed from the GeoRange
and is now completed automated behind the scenes.
Whenever the size of the GeoRange is (0,0) it will automatically
be deaallocated from the SystemGeo.  Otherwise any resizes on
the GeoRange will ensure that it is allocated in the SystemGeo.
This makes dealing with GeoRanges much more safer.
Because of this there will be no more allocation routines on the
unpacked shapes and geo ranges.  There will just deallocation methods
which will size the space down to (0,0). In the GeoRange it is
called make_empty();

Unpacked shapes will now store its fill and outline geo ranges on the stack.
This just makes the class a little bit safer. We always create these geo ranges anyways.

Alsoo debug vertex and index array size checking was added to the FTGL
code to make sure our unpack and fill routines were working properly.

The GroupGeoLoader has been updated to remove all GeoRanges in it's
destructor. This was causing issues on shutdown.

The Hub's destructor will now destroy spokes in reverse order.
This is in general safer. Although we'd like the destruction to
be order independent.

Unit tests were also fixed.
Everthing passes now, and the quicks of the opengl display which
occured during interacting with nodes and links is now gone.
So it's all good now.