Improve the roster search

- now case-insensitive
- search in the bare jid instead of userpart only (and still in roster
  names)
- do not display groups when searching
- display offline contacts
- do not expand resources if they were before the search
Fix #2320 (TB on /info with an off-roster contact)
Fix a tb with the tell plugin on wrong input

it didn’t make anything crash, but still.
Fail properly when the config can’t be parsed.
Add a mirror plugin
Add the stoi plugin
Message to join the room with an other nick only if the room is not joined yet

Because that message doesn’t make any sense if you are in the room and you
get a nick conflict from the /nick command.
Add the possibility to watch the changes of a config value

Using add_configuration_handler() we can now set a callback to be called
whenever a given option value is changed using /set
Trigger config_change handlers when the config has changed using a USR1 signal
Add config_change handlers for the two keepalive options

We can now change the keepalive values with /set, without restarting
Let the user disable the auto-ping by setting connection_check_interval to 0
Update the changelog
Revert 9eaffe1369f2be177576402f20edcd114a1eaa9d because of 3.1 compat
Consider the number of columns of each characters in the poopt module

Some characters take 0 columns, others take 1 or 2 (full-width characters)

fixes #2142
Exposes the wcswidth function in the poopt module

see #2142
And actually use poopt.wcswidth to properly count the nicks' size

see #2142
Remove the now useless (and fucking slow) wcwidth python implementation
Fix some compilation warnings in the poopt module
Add a poopt function to cut a string by the number of columns it takes
Use cut_by_columns to properly cut nicks in the UserWin window