core: add shared strings to reduce memory usage

Shared strings are stored in a hashtable with pointer for keys (values are not
used).

The key has a reference count + the string.
The initial reference count is set to 1 and is incremented each time the same
string is asked.

When removing a shared string, the reference count is decremented.
If it becomes 0, then the shared string is removed from the hashtable (and then
the string is really destroyed).
core: add support of shared strings in split of strings (add functions string_split_shared and string_free_split_shared)
core: use shared strings for tags on lines

It can reduce by about 30% the memory used for lines in a buffer.
core: add commment in function string_shared_get (returned value must not be changed)
core: use shared strings for prefix on lines

It can reduce by about 10% the memory used for lines in a buffer.
core: use shared strings for groups/nicks in nicklist
Merge branch 'shared-strings'
core: fix computation of columns in output of /help (take care about size of time/buffer/prefix)
core: update polish translations
Version 0.4.2-rc1