Defer bodyElement fetch to happen in `bootstrap()`, fixes #9

Changes:

- Grab reference to `document.body` on `bootstrap()`, not on script load time
- Add e2e test for `bootstrap()`
- Add tests for CSS class handling for regression catching and documentation purposes - this required changing the `bootstrap()` to return a Promise, don't see this breaking existing implementations.

If you're not happy with some of the changes I made, please let me know. Some changes are slightly out of scope from the original bug perspective, but decided to add the related tests in the same branch anyway.

Both `grunt` and `npm test` commands pass in this branch.