Distributions as UFunc

See code, it creates a way to treat continuous probability distributions as a ufunc. So we can do things like this:

    val x: DenseVector[Double] = ...
    val d = new Beta(1,2)
    d.pdf(x)

Right now implemented only for `Beta`, but I can add to other continuous distributions. 

Also requires mixing a trait into the companion object (no implementation needed).