Lots of work to get collisions working without any runtime critical allocations.

- New ArrayMap class which bases itself of ArrayLists and doesn't allocate after creation
- Moved a bunch of classes around for organizaiton related to collisions
- Other misc stuff that got put in here