partial fix for map (non-)support of const ranges

This pulls partially addresses the issue of passing const ranges to map. This improves on the previous state by:
1. Explicit check that the const to non-const copy will work, and throw a diagnostic error in case it can't.
2. Casts `Range` to `Unqual!Range` before calling `MapResult`, to avoid useless multiple instanciations.

To be frank, I'd be tempted to simply remove/deprecate any support for things which *AREN''T RANGES TO BEGIN WITH*. But since we currently support them, I'm unsure about how to go about it.

Deprecate? Remove? Leave as is?