Now, requesting to allocate an array that is too big gives the exception
'array is too big', like numpy.
This does depend on a gcc extension, `__builtin_mul_overflow`, present
since at least version 5. This extension is also supported in clang.
msvc is probably the only compiler of note that does not support it.
Closes: #576