Refactor discovery code to use promises

This PR changes `RemoteStorage.Discover` to use promises instead of a callback. After this the only two places where callbacks are still used will be (if I grepped correctly), in readBinaryData and in the calls to IndexedDB (whose API we don't control).

It also changes the function signature of `remoteStorage.remote.configure` from having lots of separate arguments, to having an object with fields.

It also adds and updates some docs, and adds a test that was missing.

~~I can't run the tests locally atm, but let's hope Travis can :)~~ tests pass and quick test with myfavoritedrinks looks ok
This function is very much using promises in the old `promising` way. Which is more cluttered and prone to error.

When you want to send back a failure or success:
```
return Promise.reject('error message');
return Promise.resolve('error message');
```

The only time you should be using pending is if you have an area of code that needs to complete a lot of async things before you can resolve the promise.