Gradient descent

Abstract class for supervised methods and gradient descent algorithm.

Modified the nnls with a self argument that was missing