Added new guide providers

1) WeightedGuideProvider weighs the gbest and pbest.
2) An AlternateCrossoverGuideProvider which applies discrete crossover to two components e.g. gbest and pbest, gbest and pos, pbest and pos, etc
3) SelectionGuideProvider which uses a selection recipe (Roulette wheel, tournament, etc) to select a particle. A component is then extracted from the particle
(pbest, pos...). This can be done perDimension or perEntity.
Rebase fixes.
Added implementation of PSPG
Rebase fixes.
Fixed an issue with too many particles being replaced in PSPG which threw an exception.
Merge pull request #169 from filinep/extraGuideProviders

Added new guide providers
Merge pull request #170 from filinep/pspg

Implementation of PSPG