new distribution type system

This implements the proposal by Simon in #119.

Through typealias, I retain all existing types, such as
UnivariateDistribution, MultivariateDistribution, DiscreteDistribution,
etc.  I created a script test/types.jl to ensure that all sub-typing
relations are preserved.

This new type system breaks nothing (all tests passed easily) and makes
it easier to write generic types and methods (the Truncated type now
works perfectly).