Generalize style (monster)

This PR does two things.

## Generalizing style

It generalizes the `'style'` approach to all objects. Including `'attributes'` and `'dataset'`

The purpose of this is first generalization and second removing the reference to the special case `'style'` from `diff()` such that `diff()` can be broken out into `vtree` without being dom specific

## Fixing all the things so it works in chrome, firefox & phantomJS

I updated the code & tests so they run in chrome & firefox & phantom

`npm run phantom` to run in phantom

`npm run browser` and open localhost:3000 to run in browser of choice.

cc @Matt-Esch @neonstalwart