Split out ProxyService

ScoringService had two duties: assign a score to submissions and send
data to RankingWebServers. They were almost independent and the second
one has been moved to a new service: ProxyService.
Start to properly handle unicode

Explictly mark what fields of the database we expect to contain textual
data by making them use Unicode. Keep String only for strings we want to
be bytes. Also use explicit type conversions, forcing a proper encoding,
at our data boundaries.

Switch to use the JSON library in the stdlib because it decodes all
strings as unicode, whereas simplejson uses unicode only if they contain
non-ASCII characters.
Manually configure SQLAlchemy mappers
Small docstring fix
Fixed dump format versioning
Make ProxyService send the correct max_score to RWS

Also make ScoreTypes produce the ranking details headers and have them
sent too.
Improve FileCacher

Split "get_file" and "put_file" (which had a very complex API) into many
simpler methods. Make LargeObject become a proper file-like object and
change the way it connects to the PostgreSQL database. Redefine some
interfaces, carefully specifying what types they expect (especially
bytes vs. unicode) and what exceptions they can raise. Add all missing
docstrings. Various small fixes and improvements.
Fix internationalization and localization of ScoreTypes
Improve RankingWebServer

Mostly unicode handling, coding style and PEP8.
Fix some updaters.

We now expect all strings in imported dumps to be unicode.
Remove the commit parameter in SessionGen().

It was only meant as a transition help. Commits must always be explicit.
Fix small details after the introduction of ProxyService.
Add a missing commit (closes #182).
Move translation evaluation to view layer

Many important strings, like SubmissionResult.compilation_text,
Evaluation.text, UserTestResult.(compilation|evaluation)_text were not
translatable. They contained a lot of information (outcomes, time and
memory measures, stdout and stderr of the compiler, filenames, etc.)
which was formatted into them "deeply" inside CMS: by TaskTypes running
on the Worker, and then transmitted via Jobs to EvaluationService that
stored them in the database. Thus, fixing it required a lot of changes
throughout the codebase.

The compilation_text was split across many fields (_time,
_wall_clock_time, _memory, _stdout, _stderr), keeping only the outcome
in _text. All of the outcome fields now contain a JSON-encoded list
whose first element is a string with placeholders and whose other
elements (if any) are the data to fill in it. This allows the string to
be translated *by the frontend* before being formatted and shown.
Translate the login page of CWS
Some details missed when ProxyService was introduced

Fixes c6769524516683280bd1da5527619dc588084cf8.
Fix LICENSE.txt

MIT is ambiguos, Expat isn't and it is a keyword recognized in the file
format specification [1].

[1] http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Fix token rules text when gen_time is less than 1 min.

Fixes #143.
Change the --light behavior of ContestExporter/Importer

Avoid it skipping testcases, and rename it to --no-generated as it's a
better description.
Small improvements to cms.io