arrays: remove() without copy and name array.removeWithCopy()

The default should be assumed to not make a copy. Making a copy is a special case (or it should be called "without" instead or "remove").

See also issue #55.

To prevent merge conflict, is based on pull #56.