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.
Won't separate `<script>` tags be loaded asynchronously? So that wouldn't guarantee that the polyfill is loaded before the code that uses it. Given the relative side of the code, it's unlikely that our code would start using Promises before the polyfill is loaded, but I still think it's wrong.

I think requiring this in the places its used is the right approach. I think requirejs is smart enough to only fetch and execute the code once.