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.
Does it make sense to load polyfills with require at all? Shouldn't they be in the page template?