mfs: Virtual destructor to mnode
mfs: Virtual destructor to mnode

This is slightly crazy (and is likely a bug in GCC).  Previously, when
we deleted an mnode* (whose dynamic type was always a subclass), we
would attempt to call the global operator delete because only the
subclasses declared an operator delete; hence static dispatch would
not find an operator delete for mnode and would call the global
operator delete, causing a panic.  However, according to C++11 12.5/4,

  ... if the delete-expression is used to deallocate a class object
  whose static type has a virtual destructor, the deallocation
  function is the one selected at the point of definition of the
  dynamic type’s virtual destructor

Given this, since mnode has a virtual destructor (because
refcache::referenced has a virtual destructor), it *should* be calling
the dynamic type's operator delete.  However, GCC seems to interpret
"has a virtual destructor" as "has an explicitly declared virtual
destructor", so, by providing an explicit virtual destructor for mnode
(which does nothing), we're able to trigger dynamic dispatch for
operator delete on an mnode*.

bowlofstew/sv6,aclements/sv6,bowlofstew/sv6,bowlofstew/sv6,aclements/sv6,aclements/sv6,bowlofstew/sv6,bowlofstew/sv6,aclements/sv6,aclements/sv6