Reimplement Language Modelling weights
LMWeight was using incorrect formulae for all the smoothing schemes.
The replacement implementation separates each smoothing into a separate
class (except that Dirichlet and Dir+ are combined into one class),
since that seems to give a cleaner public API, and also simplifies the
implementation. It also means we can now clearly say "don't use
LMWeight" without risk of confusion.
Fixes #779, reported by Sourav Saha.
Closes https://github.com/xapian/xapian/pull/230