Bus: receive notifications

It follows the JSON-RPC protocol: a notification is similar to a
request except for the id, which is not needed.
Activity: send activityPause and activityStop notifications

Activities can add listeners to those events.  An activity that
handles 'activityStop' can also call event.preventDefault() to prevent
the close, and explicitly call activity.close() after storing.
Fix for previous commit
Support screens with different DPI

By changing the subcell-size variable, like GTK sugar-artwork does,
and outputting different CSS files. In particular, output CSS files
for 96dpi and 200dpi screens. In GTK they were named sugar-72.css and
sugar-100.css, but seems better to set more specific names:
sugar-96dpi.css and sugar-200dpi.css .
Amend the change in graphics README
Add header to be ignored by recess

This code will be checked when checking the files
it's imported from.
New module, helper to store localStorage in the datastore
modify "save" to solely run the callback when running under standalone mode
Set JS strict mode

Avoid it on purpose in test/karma.conf.js and test/loader.js because
there are no functions there, only settings.

Also fix errors that were silenced before:

- if not using 'new' to instantiate a class, JSHint throws: "Missing
  'new' prefix when invoking a constructor"

- Console errors: "strict mode forbids implicit creation of global
  properties".  Some variables missed 'var'.
Missing var keyword
More strict mode fixes
test: Ensure the datastore object has an objectId (datastore)
isStandalone method for env module
Add webL10n missing definition path
dictstore init uses isStandalone method
dictstore save method uses isStandalone method
Refactor: Ensure standalone mode on "dictstore on standalone mode" describe setup
js-beautify fix
js-beautify fix
test: should run callback with null error and environment.

Env test getEnvironment on sugar mode when env was already set: should run callback with null error and env