barely functional extra-critical solution class
correct expression for the bore speed.

Now we get the correct right resonant bound.
conjugate: easy finding of zeroes of F or G
working F,G root finding following Lamb's method

still has some issues though. sometimes calculates spurious roots
for the first guess, which the nonlinear solver doesn't like. also
not particularly quick.

future changes:

1) find intersection of F and G using plt.contour / kdtree entirely

2) try fsolve instead of nsolve for the enhancement.
Basically working solver for given Ui

Only finds the mode-1, +c solution.
Functioning extracritical solutions
all roots for given Ui
tidy, doc
>100x performance

Mainly comes from using matplotlib backend contour function (not good
practice but works here) and fsolve instead of nsolve.

Also precalculated equations when possible.
TODO: write some tests!