Expand scope of unittests of RandomDie and fix immutable bug

Previously, a bug concerning immutable reals slipped through the
cracks. The unittests now test against const and immutable types to
cover those kinds of cases. Example of code that would fail to compile:

    immutable real[] props = [0.0, 1.0];
    auto dicer = randomDie(props);

To make the unittest pass, a simple fix was also implemented in the
way that the StorageType is chosen by default.
Change the way RandomDie handles qualified types

This makes it so that randomDie explicitly supports Ranges that have
qualified ElementTypes (e.g. immutable, const, shared). In addition it
changes the way that RandomDie stores the cumulative array internally
to be immutable (since it will never change after being made).

This change would make it so that qualified StorageTypes are equivalent
to their unqualified forms, so to make that clear only unqualified
StorageTypes are accepted. The documentation and unittests for
RandomDie have been updated to reflect this change.
Change back ordering of arguments for RandomDie

This removes the variadic argument feature and restores the original
order of the arguments to improve the usage of randomDie as a range.
This allows for consistent UFCS usage of randomDie.