Adding contains(); fixing bug in mutate

Mutate wasn't checking if the chosen new function was in the available
function set, just that it was in the proper arity, thus leading to
infinite output values and fitnesses.

New templated bool contains(item, set) function (seriously, why isn't this in the STL?
I mean any_of() works if sent a lambda, but this is clean), so I can
easily check (in linear time) if an item is in a set (my use case:
chosen function is in the proper arity and is available for use).
Refactoring, additional asserts in algorithm
Using initializer list for Individual constructor

Also added assert to evaluate function (isnormal(error))