Make IListenable, IPersistable, IExecuting, and IRestricted stand-alone interfaces.

Update the rest of the library to match the changes.

Having independent interfaces is important to play well with adaptation.
Specifically, here we have adapters from IContext to IListenable,
IPersistable, IExecuting, and IRestricted. If we allow them to be
subclasses of IContext, each adapter can be applied to the result of
adaptation, causing an explosion of aadptation paths.