Clean up bus initialization

* We now explicitly initialize the bus in activity, or in
beforeEach for tests. This is more predictable that initializing
whenever the bus module is loaded. Also it will allow to write
tests that uses a mock implementation of the bus socket.
* Environment setup is factored out to its own module. It will
allow other modules which needs to get values from the environment
to do so.
* The environment is taken from a single window.sugar.environment
object.
Rename Bus to bus

Just for consistency with the rest of the code.
Factor out websocket specific code

This will allow to mock the client in tests but might also
be useful for non-websocket implementations of the bus on
other platforms. As a nice side effect the change makes the
code cleaner.
Add a test for bus.sendMessage
Return an error as first callback argument

For all the async methods.
Rework datastore API to use a single callback

It should simpler to understand and to use.
Add datastore.setMetadata
Initial high level datastore API