delegation: implement delegation mapping

Add spec and implementation for setting up delegations using a
Mapping (e.g. dict) argument to specify the local and target
attribute names, which may differ.
delegation: update spec to check method invocant

Update the spec to ensure that the invocant of a method being
delegated to is the delegatee.
delegation: spec for delegating to undefined attribute
doc: add delegation chapter