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.
Merge pull request #169 from filinep/extraGuideProviders

Added new guide providers