Resolve #18 - improvement to (event bound) reference-list API

The revised API makes it much easier to accidentally forget to the use the
return value of the 'Replace' method.  That is - there is no return value,
instead it uses a 'ref' parameter.

* Old API still exists and works but has been marked obsolete.  It will be
  removed in v3.x.