Enable collaboration by default on activities

When we implemented read max_participants from activity.info [1]
we changed the default value of max_participants, from 0 to 1.
Before, was responsability of the activities set max_participants == 1,
when the activity not implemented collaboration.
This change make the default backwards compatible.

[1] d0cca91fe8510e11de8f332bf659789daf9c0d8d
Fix black palettes

Push the palette widget opening process to the latest
in order to avoid the race condition where the animation
takes of the place of the real palette.

Fixes #2184

Signed-off-by: Martin Abente Lahaye <tch@sugarlabs.org>
Remove Palette logic out of PaletteWindow

PaletteWindow is the parent class of two different subclases,
Palette and _ToolBarPalette. Palette uses state changes intensively
in order to display secondary content, but _ToolBarPalette does not.

Because of this, Palette overwrites PaletteWindow's popup and popdown
methods adding one extra param called "state". This param is not required
either in PaletteWindow and specially not in _ToolBarPalette.

Therefore, any piece of code inside PaletteWindow which is meant for
Palette subclassing, should be moved out of PaletteWindow and placed
in the Palette class, where it corresponds.

This patch fixes the cases where _ToolBarPalette breaks because of this
mismatch.

Signed-off-by: Martin Abente Lahaye <tch@sugarlabs.org>
Release 0.102.0
Save spent time on activities

Use set_active and save events to keep track of the time,
in seconds, that the activity is on the main screen. The
time is calculated and stored each time an activity is
open/resumed and closed. Therefore, each activity entry
will have an array of seconds for each time it was used.

This makes a 1 to 1 relationship between the spent and
lauch times. In orders words, we can reflect not only the
"when", but also the " for how long".

Even though this time does not necessarily represents the
real time the user "used" the activity, it is a low-cost
approach for reflecting time.

This is a long requested featured from deployments that have
been using statistics tools on journal metadata, and this
patch is already being used by OLPC-AU.

Signed-off-by: Martin Abente Lahaye <tch@sugarlabs.org>
Merge branch 'tchx84-spent-times-try1'
Bundlebuilder check if activity files are in git

git version 1.9.3, in a activity directory created inside sugar-build/activities
return a empty string when the command "git ls-files" is executed,
and no repository is configured.
We need verify that condition, and process a file list from the filesystem.
Release 0.103.0
Merge branch 'godiard-bundlebuilder_gitls'
Add a testing method to open a activity with a uri

This can be used in the test to check if the activity can manage
different file formats.
Move SpeechManager from sugar to sugar-toolkit-gtk3

This is done to be able to use this implementation of the feature
in the activities. A complementary patch is needed in sugar module.
Add a list of language names to translate

To display a list of translated language names in the UI,
we add a list of the available languages, because the espeak
language names are not translated.
TTS: Cache the voices list
Initialize Gst before use speech

In sugar gst was initialized at startup, now we need initialize Gst
in the speech code.
Add a structure to store the translated voice names
Add parameters to configure tts

Activities can set pitch, rate or voice used to play text to speech