Added a Runner class, started work on FitnessFunction class.

Also modified the factories to use the constructor rather than setters,
allowing us to use attr_reader rather than attr_accessor.
Fitness function, #setup for Particle
Large refactor: use Constructor to instantiate, then delegate.

Still not sure what the relationship should be between the constructor
and the runner. Also, I think 'step' might be oversimplifying things in
the runner, since there is two parts to the update for PSO.  One, to
calculate the best position, best fitness etc - and another to calculate
the new velocity + position.