core: split the static parts of a plugin into a factory class

The factory class can return the plugin's name, version etc. in addition to
creating and destroying plugin instances.
protocols: port protocol plugins to new factory API
plugins: port general plugins to new factory API
core: check if protocol plugin is loaded already, before creating plugin
licq: split plugin and plugin instance

Plugins now consists of a Licq::Plugin class (Licq::GeneralPlugin or
Licq::ProtocolPlugin) and one or more Licq::PluginInstance class(es)
(Licq::GeneralPluginInstance or Licq::ProtocolPluginInstance). General plugins
always have at most one instance, while protocol plugins can have number of
them.

Each instance has an unique id and runs in a separate thread.
jabber: add support for multiple owners
msn: add support for multiple owners
qt4-gui: update message to reflect that licq now supports multiple owners
core: shut down protocol instance when removing owner
licq: update changelog for multiple owners support
qt4-gui/rms: Request protocol instance for owner
licq: make it possible to cast a plugin factory to a internal interface
icq: Move static data from instance to factory
qt4-gui: Update to use icqdata.h
api: Remove getProtocolInstance(protocolId)
core: remove stale method declaration missed in da63ae4
core: keep track of plugins in plugin manager directly

It simplifies things to keep the plugin in the manager in addition to keeping
in in each instance. Plus it gives us the option of loading a plugin without
creating an instance.
core: only create protocol instance when creating owner
jabber: work around thread race in gloox when having multiple owners
core: use std::find/find_if instead of for-loop