Version 0.10: Simplify communications structure.

message.go: The message system has been simplified. Now the only message
exchanged for crossovers is a crossoverMessage, which contains only an
integer ID. An ID of -1 indicates that the message is a new request.
Otherwise, the ID is the ID of the request that is being responded to.

slave.go: When a slave receives a crossoverMessage (which is a request),
it responds to it with a crossoverMessage with the same ID (as a reply)
and then waits for a continueMessage. During this time, it will not
interact with its population so the island may do so without fear of race
conditions.

solution.go: Add Solution.Clone(), which returns a copy of the object (via
Instance.NewSolution() and Solution.Assign()).

solve.go: Add notice about what instance is being solved.

island.go: Crossover requests are now simply a map from id (int) to child
index (int). The island.doSelection() method does selection on the
island's population and notifies all children (via a continueMessage) that
selection has taken place.

individual.go: Remove Individual data type. Remove individual.export().

success.go: Success is now unexported (as success). Success.Ratio() is now
success.ratio()

population/operations.go: Population.Crossover now works on the whole
population and takes the parent sub-populations as arguments. mask() now
takes *individuals instead of *Individuals. Population.MutateOne is now
SubPopulation.MutateOne; it no longer removes the individual from the
population -- it just returns a new one.

population.go: Add Population.ShouldSelect(), which determines if all
SubPopulations in the Population are full. Add
Population.IsSubPopulationFull().

subpopulation.go: Rename SubPopulation.Full to SubPopulation.IsFull.
Remove the Pick* and Remove* methods. Add SubPopulation.Len().