Added a replace function to IString and IList

For the benefit of implementing assignment with splicing I have
implemented a replace function for IString and IList. The interfaces are
mostly the same:

IString replace(int begin, int end, IString replacement)
IList   replace(int begin, int end, IList replacement)

Observe that they are also defined for the case begin > end.

Also test cases added.

One fails: for a string with Unicode chars. I will consult an expert for
this ;-)
Merge branch 'master' of https://github.com/impulse-org/pdb.values.git