Make docs an explicit parameter in api()
Move root specification back to api()

Go back to the earlier model we had for specifying roots, whereby the
name and path are given in the call to the api() decorator. Thus,
instead of the set of roots being a parmeter to instrument(), it is
derived from the set of classes which have had the api() decorator
called on them.

The difference this time is that when you use this decorator, e.g. in
the code below, you are registering a root on an *instance* of the
HALInterface class, rather than in global state. Thus we still have a
separate root set for each instance of this class, avoiding global
state.

    hali = HALInstance()
    # ...

    @hali.api(root_name="system",root_path="/system")
    class System:
        # ...

Note that both the root name and path must be given as explicit
parameters to the decorator. In the future, it would be convenient to
remove the distinction between these two, and identify roots solely by
their path.