Updated speciation distance calculation and crossover operator. Other improvements, fixes and additions.

- Rewrote crossover operator to more closely match that in original NEAT implementation.
- Speciation distance calculation no longer normalises on length of genomes (to match original NEAT).
- Fixed handling of bias values as a neuron parameter in mutation operators so they are handled like
  connections to a bias input neuron (the connection may or may not exist).
- Allow generating initial populations with some random structure.
- Added double pole balancing fitness functions.
- Major improvements to parameter tuner code to increase flexibility and add handling of non-floating-point parameters.