Generic replace function.
This function can do several kinds replacement operations, the
different syntaxes do different things as follows:
If all the arguments are strings, a copy of s with every
occurrence of from replaced with to will be returned.
Special case: to will be inserted between every character in
s if from is the empty string.
If the first argument is a string, and the others array(string), a string
with every occurrance of from [i] in s replaced with
to [i] will be returned. Instead of the arrays from and to
a mapping equvivalent to mkmapping (from , to )
can be
used.
If the first argument is an array or mapping, the values of a which
are `==() with from will be replaced with to destructively.
a will then be returned.