Bb2 optimization

Optimization of the BB2 scheme.
I think I mentioned this on IRC, but now `x` is only used to calculate `difference`, you'd do better to just pass in `difference` directly - it's the same or slightly simpler to calculate, and you'll reduce the risk of round-off errors:

```
x = N + F - 1.0; y= N + F - wdfn - 2.0 => difference = wdfn + 1
```

and

```
x = F; y = F - wdfn => difference = wdfn
```