Reimpl'd OnBehalfOf as an optional ctor parameter

User feedback suggested that implementing OnBehalfOf as a one-off
operation would be painful to work with.  So BoxManagers can now be
constructed 'on behalf of' another user.  All operations performed by
that BoxManager instance will be in the scope of the 'on behalf of'
user.