Replaced the POT generation shell with xgettext.

Using xgettext allows us to easily customize the translation functions,
and use all the neat pot features like comments to translators extracted
from source.
 #404 support for gettext msgctxt.

Also added a proof-of-concept with a string that needed contextualization.
Make it clear when strings are translated by Cake.

CakePHP automatically passes form ids through the translate function,
whereas it isn’t parsed by the string extraction tool. Most of these
strings were also present in other places of the code, so they ended
up in the POT file, but then file references (“#: ” lines) were wrong.
Merge branch 'dev' into better-i18n

In order to include the new __d('admin', ...) strings.
Extract domain-specific strings in custom shell.
Adjust github file reference URL (master → dev).
Support for plural strings.

Closes #434. Initial patch by SafaAlfulaij.
Support for contextualized plural strings.
Extract notes to translators from comments in code

This extracts comments that contain @translators above the line
that calls a __*() function.
Remove unused code that contains unused strings
Move some remaining strings to admin domain
Allow the number of results string to be moved

after or before the title.
Remove useless string

that can be difficult to translate.
Use the printf %n$s syntax wherever params > 1

so that translators can reorder params.
Various i18n fixes.

Include markup as less as possible in translatable strings,
factorize code, fix markup, fix URLs refering to tatoeba.org,
merge translatable strings.
Add a python-like format function

With cool features useful for #404
New declension system, applied to language names

Delension only applies when a string is used inside another.
Therefore, I had to separate languages names that are used alone
from the ones that are used within sentences. Both support
declension.

Closes #404.
Switch from sprintf() to format() + small facto

Got rid of all these horrble %1$s, %2$d etc. in translatable strings
in favor of the new {0}, {1} or {anyKeyword} format() syntax. Also
factorized the result count display/format into a helper.
Reworded some messages to make them clearer.
Merge strings for easier translation.