function once (disposable) {
  return new Disposable(disposeMemoized, memoized(disposable))
}
Wrap an existing disposable (which may not already have been once()d)
so that it will only dispose its underlying resource at most once.
@param {{ dispose: function() }} disposable
@return {Disposable} wrapped disposable