Cleaned up generation counting
Moved mapping over fitness cases and reduction of the result out of the problem-specific fitness function and into the main GP processing.
Added convenience macros to structure fitness functions and termination predicates.