COPY metamethod now accepts zero length ranges

The COPY metamethod (used by the copy() builtin) now accepts ranges that
result in a length of zero. That is, it will return an object with no
elements if the starting point is the end of the source object, or if the
length is explicitly specified as zero.

The change applies to array, string, dstring, and all vector* types.