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.
`key` can currently be a string, so a simple `cons` isn't quite the correct logic.

Also, if I understand correctly, that would imply adding `(cons (:root-key opts) key)`  (or the appropriate key joining logic) to each of the call sites in `get*` etc., which doesn't seem good to me.  

Note also:

```clj
(encode-key ["key" "/some-other"]) ; =>"key//some-other"
```

We could split `encode-key` into two parts, one to normalize a key into a sequence of path components, and one to join the components.