Add Weibull Distribution

Small pull request to both get feedback, get used to the PR system, and hopefully contribute!

Cliff notes:

* I moved constants from general.go and norm.go to constants.go as other distributions may have their own constants as well (or want to use some of the ones the normal distribution uses) and rather than have them spread out within the package's files, have them centrally located
* I added the Weibull distribution. Note that there are four functions not implemented and marked `TODO`: `ConjugateUpdate`, `Fit`, `NumSuffStat`, `SuffStat`. If anyone knows of how to implement these for the Weibull, please let me know!
* I leveraged the existing test framework but did not change it.
Yes, but we can do all the terms in log formation, and then exp of all of them
(Gamma(1 + 3/k) lambda^3) / sigma^3    --> 3 * log(lambda) + math.LnGamma(1 + 3/k) - 3 * log(stdDev)
then do exp(first) - exp(second) - exp(third). I guess log sum exp doesn't actually work because some are negative, but you get the idea.
Especially since sigma > 0, this helps the numeric stability in the second term by eliminating the sigma^2, and mean and sigma should be somewhat on the same order, so (mu / sigma)^3 should be better than mu^3 / sigma^3.

Basically, in my experience, putting off Pow as long as possible helps avoid underflow in extreme cases. Underflow probably doesn't matter for skewness, but I would guess my suggestions help accuracy.