Add insupport methods for distribution types when appropriate

For many distributions the support does not depend on the parameters of the distribution. This adds methods for
```julia
insupport(Normal, x)
```
in addition to
```julia
insupport(Normal(), x)
```

Also many of the checks in constructors were condensed to the
```julia
check || error("check failed")
```
or
```julia
check ? new(args...) : error("check failed")
```
form.

Some external constructors were moved to internal constructors when possible.

Checks of the form `x > 0.0` were rewritten as `x > zero(x)` so that `x` is not converted before the check.