Abstract i18n some more
Extract i18n initialization into ui_i18n.c

This allows be more explicit about language fallback
route, and change it per-language.

Localized strings are now accessed via a function call,
instead of exposing a big string array.

This allows additional bounds check with a visible canary
value, and further abstracts i18n implementation.
Italian translation: update
Add unused.h with UNUSED macro
Fix unused parameter warnings in obviously correct places
Fix unused parameter warnings for userdata in callbacks
Fix unused parameter warnings for Tox*.

We have a single global instance of Tox,
so in many places we don't care.
Mark unused coord/element parameters in UI functions.
Fix unused parameter warning in messages_set_typing()

is_typing state is directly extracted from friend/group,
that corresponds to the MESSAGES ui element.
Fix unused parameter warning for tox_thread()

Not used anywhere, and thread creators actually
just pass NULL there.
Merge pull request #433 from albel727/better-i18n-take-two

Better i18n take two
Merge pull request #436 from Ansa89/italian-translation

Italian translation: update
Rewrite context menus with i18n support

CONTEXTMENU struct is generalized by introducing
ondisplay() callback for fetching menu item strings,
and adding a userdata field.

One out-of-the-box CONTEXT variety is provided.

It treats userdata as an array of UI_STRING_IDs
to be displayed (beware, contextmenu_new() function
doesn't copy the array, so make sure it has proper lifespan).

All previously existed context menus are replaced with it.
Add i18n text for various dropdowns
Add russian-localized text for dropdown menus
Move hardcoded dropdown menus from .h to .c
Rewrite dropdown menus with i18n support

DROPDOWN struct is generalized by introducing
ondisplay() callback for fetching menu item strings,
making onselect() accept simple menu index
instead of a handle (it almost always coincided anyway),
and adding a userdata field.

Two out-of-the-box DROPDOWN varieties are provided.

Simple dropdown treats userdata as array of
UI_STRING_IDs to be displayed.

List dropdown treats userdata as array of DROP_ELEMENTs,
and there are helper functions for adding and deleting them.

All of previously existing dropdowns are replaced with
one of them, except dropdown_language, which is now
autogenerated to contain all existing languages,
instead of being hardcoded.
Let activated dropdown menus resize to fit containing text

This will prove necessary for localized menus,
for it's not always possible to fit text
into the same width as with English.
Let context menus resize to fit containing text

This will prove necessary for localized menus,
for it's not always possible to fit text
into the same width as with English.
util.c: fix possible out of bounds array access