Extend arange: make shape optional

Ensure shape xor stop is not None, raising ValueError if both are None
or neither are None. It is not necessary for the user to give both as
arguments, so this prevents users from giving conflicting dimensions.

If it is decided later to allow both to be set to non-None values, we
could use broadcasting to fill the remaining values with the stop value.
For now though, to prevent confusion, both shape and stop cannot be
supplied.

This commit adds the related tests. It also refactors tests so that
keywords are not used if unneccessary. `arange(shape, start=1)` becomes
`arange(shape, 1).`