Revert "Math: don't allow *::data() to be called on rvalues."

The pointer conversion can be done only explicitly, thus the users will
always know what they are doing. With that change, perfectly valid
things like this couldn't be done (the result of a + b is kept until the
semicolon):

    Vector3 a, b;
    void foo(float* data);
    foo((a + b).data());

Moreover this conversion wasn't even properly tested, leading to issues
as in mosra/corrade@781f5df38a7b1b366f3de477dd5fe641eca6ed20.

This reverts commit add989703e694f7719e015cc12717d9953de0322.
Made ImageReference data pointer constant.

ImageReference is supposed to be wrapper around existing data array of
some type which is passed to Magnum functions. Thus modifying the
original data array (which must be kept somewhere for proper deletion)
is much better option than casting the pointer returned by data() to
some proper type and then operating on that. Hopefully this won't break
any existing code.
Disallow conversion of const {Image,Trade::ImageData}&& to ImageReference.

The conversion is done implicitly, thus this seemingly innocent code
would be allowed:

    ImageReference2D reference = Image2D(...);
    foo(reference.data()); // crash on access, data already deleted