Fix undefined behaviour in left shift

This is not a problem with a usual compiler configuration, but LLVM/clang
detects it when compiled with:

-fsanitize=undefined-trap -fsanitize-undefined-trap-on-error -ftrapv
Fix memory leak in the test program
Add missing include in the test program
Use path to HexChat instead of XChat in the test program

Note that this affects the test program only. It doesn't affect users
of FiSHLiM. The reason for this change is that XChat doesn't seem to be
maintained any longer.
Handle a special character before "+OK", e.g. identify-msg + or -