Pl2 optimization

Optimizing the PL2 weighting scheme.
It occurs to me that for any given document, we know that `wdf <= doclen` (since `doclen` is defined as the sum of the `wdf` values, and `wdf` can't be negative).

So this upper bound is too pessimistic if `get_wdf_upper_bound() > get_doclength_lower_bound()` (which is probably quite likely for a data set where the document length varies much, especially as we currently don't track per-term wdf upper bounds).

In this case, it seems to me that we can find a better bound by finding `x` to maximise `x*log2(1+cl/x)` such that `get_doclength_lower_bound() <= x` and `x <= get_wdf_upper_bound()`.  I think this is maximised by making x as large as possible (proof left as an exercise for the reader, as they say), in which case this boils down to:

```
if (get_wdf_upper_bound() > get_doclength_upper_bound())
    wdfn_upper = get_wdf_upper_bound() * log2(1 + cl / get_wdf_upper_bound());
```

Does that logic make sense to you?