[Headers]: Fixed namespace issues

Fixed a mistake I made a long time ago, by accidentally making the examples
dependent on the namespace declaration in one of the core headers rather than
having their own (and then introducing a bug by removing that declaration as
unnecessary).
[Examples]: Cleaned up memory leaks in some of the examples

Fixed the memory leaks in the 1- and 2-level examples. Will deal with the
3-level examples later.
[NonHierarchicalGenePool]: Fixed potential memory error

Realized that HierarchicalGenePool's destructor shouldn't be responsible
for cleaning up its population (which comes from outside it), and that
attempting to do so can cause serious memory issues (for instance, if
population is an array on the stack - which is perfectly legal, but causes
horrible memory corruption if we try to free it).
[GenePool]: Fixed potential memory leaks

Realized that GenePool doesn't have an overridden destructor, which means
that NonHierarchicalGenePool and HierarchicalGenePool aren't actually being
cleaned up when they're declared as instances of GenePool and deleted
afterwards. This commit fixes that by giving GenePool a simple virtual
destructor.