minor refactoring of GWT likelihood
This MR moves the likelihood calculation part of the likelihood to different methods for the different marginalisations. It also makes sure the returned quantity is always a float.
The former makes the main log_likelihood_ratio
method a little neater and will also allow subclasses to more easily modify how these marginalisations are done.