Binomial TPE sampler, AbstractSampler type, KS test for discrete vars

This implements the BTPE sampler of Kachitvichyanukul and Schmeiser in native julia, replacing the Rmath routine. At the moment it seems to be about 10% slower than the Rmath code. Any comments/suggestions for improvement appreciated.

I've also added an `AbstractSampler` super type: if we're happy with this construction, I can extend it to other distributions (`GammaSampler`, `MultinomialSampler`, etc.)
It is required in `multinomial.jl`. `MultinomialSampler` should probably be moved, but this can be done later.