Allow specification of a root key on get*

This allows access to keys such as /admin/machines which are not under the
/keys path by specify the :root-key option, e.g.
(get* connection "/machines" {:root-key "admin"}).

Note that this changes the signature of key-url, so adds an overload to
preserve the previous signature of the function.
Would it make sense to just re-use the existing key-joining logic here, and just have it take `(url client path)`, where `path` is a sequence of path fragments or a string? Then you can express `key-url` as `(url client (cons "keys" key))`, and the top path level isn't a privileged argument any more.