fix(watch_record): add missing methods to _EvalWatchRecord, safer logic to _Handler.release()

Previously, _Handler.release() would attempt to read the _cache property from watchGrp, regardless
of whether or not it was defined. This change may or may not be the correct solution, I'll need to
investigate.

Additionally, I omitted to implement the remove() method of _EvalWatchRecord. This CL implements
the method.