Rework responses to datastore API calls

We are now responding the main call immediately. If we fail
to write to update the datastore, we just return an error to
the stream close call.

This will allow to simplify the javascript API. The double
datastore call on create is unfortunate but I prefer to keep
the API clean of sugar specific limitations, we can fix the
implementation later if necessary.
Add datastore.set_metadata
Tweaks to the datastore API

load_data is renamed load and also passes metadata
create does not send the data
update is renamed to save

The main goal is to allow creating objects with no data.
Fix the shell on first start

Many things was broken, for example the global keys, because
we was failing to call _complete_desktop_startup.

The incorrect variable name is probably the result of an
incomplete refactoring.
Merge pull request #78 from dnarvaez/first

Fix the shell on first start
Set HIDDEN attribute on .Sugar-Metadata directory

According to the OLPC AU dpeloyment [1], 50% of the support calls they
get from teachers are due to a confusion caused by looking in the
.Sugar-Metadata directory for files from Windows. "On Windows, the
directory is not hidden, and people are going into it expecting their
files to be in there. What's even more confusing is that the filenames
they are looking for are indeed inside, but those are metadata and not
the actual files."

This patch uses a new Sugar extension, sugar-fatattr, to set the
HIDDEN attribute on the .Sugar-Metadata directory.[2]

[1] http://sugardextrose.org/issues/1367
[2] sugarlabs/sugar-toolkit-gtk3#33