Introduce Contact-type plugin system.

\Drupal\campaignion\Contact is now the entity class for redhen_contacts.
We don't need to cast \RedhenContact objects anymore.

The plugin-system consists of the following classes:

ContactTypeManager: Plugin loader and factory. The main class to be used
by code working with exporters/importers.

ContactTypeInterface: Interface that all Contact-Type classes must implement.
Port everything to use the new Contact-API.

Contact-type features (ie. campaignion_supporter from the
campaignion_starterkit) need to provide a contact-type class via
hook_campaignion_contact_type_info().

Profile using any CRM functionality need to provide at least one
contact-type and set the 'campaignion_supporter_contact_type' which
defaults 'contact'. Hint: use "drush vset" or variable_set().

Failing to provide the default contact-type will lead to a
UndefinedContactTypeException being thrown.