Identify roots by path, not name

Remove one level of abstraction in terms of how roots are identified. It
used to be that each root would have both a name and a path, and these
were not always identical - for example, the Account class had a root
name of "account" and a root path of "/my". The dictionary maintained by
HALInterface was keyed by the name, and the user loader function would
return the set of roots in terms of these names.

This commit gets rid of root names. Instead, roots are identified solely
by their path. HALApplication's @api decorator takes a 'root' parameter
specifying this path, e.g.:

    @hal_app.api(root="/system")
    class System:

In api.py, we maintain a dictionary of roots, which is similarly keyed
now by path instead of name. The user loader function is now also
expected to return a dictionary keyed by path instead of name.