Encode collection names, keys and the search string.

Names, keys and search strings may contain url characters and should
be escaped to be properly sent to the server.  For example, I might
have a collection called 'links' and the keys are the full urls.  The
"links" collection might be represented in json as:

```json
{
  "links" : {
     "http://www.google.com/" : { "category" : "search engine"}
  }
}
```

To properly send that key, it needs to be encoded into the api url:

```
/v0/links/http%3A%2F%2Fwww.google.com%2F
```