Allow std.numeric works with const ranges

Half of algorithms lacks `Unqual` for temporary type based of
`typeof(return)`.

Attention: dotProduct for `const` arrays no returns `const`. This is
done for unification with other methods.
For built in types it is always assignable to immutable.
Or you want to check exactly `pure` attribute?