Population heaps are now correctly appended to. Fix #2.

popHeap.Push() and popHeap.Pop() now take pointer receivers and heap
methods are called with &p.heap instead of p.heap so that the underlying
slice will be modified. Previously the underlying heap was not being
modified (becuase the heap methods did not have a pointer receiver), so
the heap slice was not updated to reflect appends (nor truncates). Hence,
all solutions appended were lost, leading to a memory leak.

Added Set.Clear() and Element.free() to recursively free up a Set (so
that it may be garbage collected).

Population.Select() now calls the Set.Clear() method on all domains of a
solution that is discarded. Population.Select was also corrected to copy
the actual individual struct instead of just the *tt.Solution (which
would have lead to runtime panics).