Shifts a subset of array elements in either direction for a specified amount.
Optionally also extends the array and fills empty space with a given element.
N --- The amount to be moved. If positive, things are shifted to the right. If
negative, things are shifted to the left.
FROM --- The left point of the region to move, inclusive.
TO --- The right point of the region to move, exclusive.
ADJUST --- Whether to adjust the fill pointer and the array bounds. The array is only
adjusted if N is positive and the range of TO+N would exceed the ARRAY length,
or if N is negative and TO equals the length of the ARRAY
FILL --- If provided, empty spaces created by the move will be filled with this element.
CONTENTS --- If provided, uses the contents to fill the new space. If |N| is greater than the
length of this sequence, FILL is used to fill the rest of the space if it is
provided. If not, an error is signalled. No matter whether N is negative or
positive, the content is filled in from left to right in the order it is given.