Revamp Array

Main additions:
RemoveAt, InsertAt - Private API.
InsertFront - Public API.
Capacity - It can now shrink and enlarge.

Most internals reworked to use RemoveAt, InsertAt - avoids a lot
of duplication and ensures proper clean-up when objects were being removed.
More than happy to pull that out altogether and save for a separate pull request.