Changes to main data structures

Player pools are now dynamic arrays.
This makes controlling them a bit easier to use but less performant.
This change has had a large impact on the codebase. Many functions have
had to be rewritten to use the adt_array library functions for handling
dynamic arrays. If unfamiliar, please acquaint yourself with the
relevant parts of the API.