Updated how the spatial GA works

Split up the next.generation function to have separate functions for
spatial and non-spatial in order to allow for more flexible spatial
mechanisms. This will also allow spatial and non-spatial to work under
the same framework without unnecessarily slowing down the non-spatial
GA.

Also fixed how sub-populations were selected from, this seems to have
fixed at least the major part of memory leak seen earlier this week.
Adding testing/experimentation functions

Functions added for testing multiple GA runs