- Renamed GAScoreTypeBasedSelection -> GAScoreSelection (shorter).
- Renamed GAScoreTypeBasedSelection -> GAScoreSelection (shorter).

- Use GAScoreSelection trait methods statically. Implementors
  are no longer receivers of the methods. This eliminates the
  need for trait objects owned or borrowed by GASelectors and
  the complexities entailed by their lifetimes.

- Determined correct signature for GAScoreSelection::iterator().
  A Box is returned, because the size of a return value needs
  to be known at compile time; since Iterator is a trait and not
  a concrete type, it cannot be the return type. A &Iterator
  cannot be returned either, because ownership of the concrete
  iterator would have been needed to be given to the structs
  implementing GAScareSelection, and we had decided to use
  those objects statically (if that's the proper term).

  The Box will own the memory of the concrete iterator. The
  default 'static lifetime of the box contents is overriden
  by a lifetime of the borrowed populations's GASolutions
  (the iterator borrows the input population).

mrjackinc/rust-monster