SurfaceControl: Provide Transaction#remove() method.

When we switched from destroy() to reparent(..., null) we introduced
a regression where the CloseGuard was not released. reparent(..., null) can
not release the CloseGuard because the caller may want to retain the control.
It seems a frustrating burden to require users to write: "reparent(null), release()"
where previously we provided destroy so we provide a helper #remove method.

Test: Existing tests pass
Bug: 123923589
Bug: 122728663
Change-Id: I60b529573f8868624c70b78c7a71a4d7c7827ff7
8 files changed