weak-object: Dispose() on self

Also included assert on AsyncWrap that makes sure that
persistent().IsEmpty().