Use promises in the JS contents API

Switch from passing success/error callbacks to returning ES6 promises.

Opening early so we can see if Travis likes simple promise use cases.
Not 100% certain, but I believe that
```
return new Contents.DirectoryNotEmptyError();
```

would also work here.  I couldn't find any specific documentation for ES6 promises though.