Closes #76 (closed), #77 (closed)

This is a first attempt at making the point choosing better, this is done by a modified loss and choose_point_in_simplex method.

The new loss function is the hypervolume of the simplex in the N+M space. eg, if we have a function `f: R^2 \to R`

. Then for every evaluated point we have three coordinated (two input, one output). Then we take the surface-area of the triangles, taking into account the output coordinates. This can be done as a triangle in 3d space still has a well-defined area. In essence this is the extension of the loss of the 1D-learner into ND-space.

The choose-point-in-simplex works by taking the center of the simplex, unless the shape of the simplex is sufficiently bad, then it will take the center of the longest edge. It does this by checking whether the circumcenter lies within the simplex. In 2D this means that the largest angle has to be less than 90 degrees, (in higher dimensions, well something similar I imagine).