Add `asFlatStaticArray`

`asFlatStaticArray` adds an ability to view any abject as a single-dimensional static array which is very useful for template code as it eliminates error-prone need to create branches and recursion for static-arrays support.

`asFlatStaticArray` isn't a `to*` function as it doesn't create a copy. It creates a view of object. And it is important that it doesn't require to provide any types explicitly.

Example:
```D
int i;
static assert(is(typeof(asFlatStaticArray(i)) == int[1]));
asFlatStaticArray(i) = 5;
assert(i == 5);

int[1][2][3] mdimSArr;
static assert(is(typeof(asFlatStaticArray(mdimSArr)) == int[6]));
asFlatStaticArray(mdimSArr) = [1, 2, 3, 4, 5, 6];
assert(mdimSArr == [[[1], [2]], [[3], [4]], [[5], [6]]]);
```

Requires pull #924.