Update package.json with newer versions.
Update browser versions.
Refactor core/observe.

Now utilises several submodules, as well as fixes several defects
and provides significantly imrpoved test coverage.