Introduce Contact plugin system.

The plugin-system consists of the following classes:

ContactManager: Plugin loader and factory. The main class to be used
by code working with contacts. Includes many convenience functions.

ContactInterface: Interface that all Contact classes must implement.

ContactBase: Base implementation of a Contact plugin. Most plugins will
extend this.
Draft: this will be split into multiple commits and rebased.