improving performance of the fuzzy function by having a state

This improves the performance of the fuzzy function by avoiding allocation of the matrix on each call. In other words, there is a matrix allocated on the first call and reused on the following calls. If bigger matrix is required it is recreated.

In order to allow parallel execution we cannot use a single global variable to store the matrix. I've introduced a State property to the Func structure which allows every function to have a state and reuse it among the calls.

Another small performance improvement is to use own min/max function and avoid the built-in Min/Max on floats.