A few niching changes/additions

- Improved performance of speciation topology.
  Calculating the neighbourhood of a particle using the speciation topology
  is very CPU intensive and it generally only has to be done once iteration
  depending on usage. A perCall property is added to caluclate it for every
  call of neighbourhoodOf when true or once per iteration when false.
- Added a change detection strategy based on function evaluations.