Fixed to gmat2D

added constness to min and max method
added const version of operator()
fixed a bug in operator-
minor change to traintest.hpp  / added utility isLabel

default traintest nholdouts increased
added isLabel utility function to determine if a given matrix is in an
accepted label form
major changes to gurls++ internal structure + minor fixes

- all tasks are now derived from class Task<T>
- added class OptTask
- optTaskSequence now also accepts OptTask objects as input
- factory system changed, it is now possible to register factories at
run-time (see manual for detailed usage)
- manuals updated
- macroavg now computes mean per-class accuracy even if labels are
passed in a single column (binary classification)
- splitho now balances the splits if labels are passed in a single
column
- added totalavg perf measure to compute total classification accuracy
(class independent, previously, the standard behaviour of macroavg for
one column binary classification)