Fix up api surface

* Take a function reference rather than a string for distribution
* Use mean instead of reimplementing
Simplify distribution implementations.

dropping unnecessary object properties that led to code bloat
elsewhere. still needs more work for the chi squared function.