Factored out copy-n-paste code from the implementations of WorkbenchPanelPresenter
Fixed UF-46: Methods of WorkbenchPanelPresenter that take PartDefinition args should return boolean

This fix had a ripple-down effect on the underlying APIs that actually perform the operations that
could silently fail.

I also had to modify a test assertion due to the tighter contract on what it means to "remove" a view
from a panel that can only hold one thing at a time.