TEIIDDES-1776: Refactor Extension Registery function

* ExtensionRegistryUtils
 * Provides common API for creating an object instance from an extension
   point. An implementation of the IExtensionRegistryCallback must be
   given which provides both the extension point metadata and the method
   for process the instance once it has been created.

* ITeiidServerVersion
 * Updates default server version to be 8.4.0. This is only applicable if
   no server has been defined and no preference
TEIIDDES-1776: Separate the preview and import managers from server manager

* Converts the preview and import managers to singletons that can be
  called independently of the server manager
TEIIDDES-1776: Implements extension point for PasswordProvider interface

* Instead of directly setting the password provider from the dqp.ui bundle
  to the dqp bundle, supply the provider using an extension point

* Extension point implemented in spi plugin
TEIIDDES-1776: Refactor TeiidServerManager and ModelerCore

* Both ModelerCore and the TeiidServerManager reference the default teiid
  server and share responsibilities for listeners and notifications. This
  is prone to error.

* Make the TeiidServerManager the single manager of all server-related
  activity.

* ModelerCore
 * Reference the teiid server manager rather than the default server as
   delegate all server-related calls to this manager
 * Since the teiid server manager is required, the current implementation
   of explicity initialising the manager in the dqp plugin cannot be relied
   upon since that bundle can be called later than functions in ModelerCore
 * Gets the singleton instance of the server manager from an extension
   points

* ITeiidServerManager
 * Extracts interface from the TeiidServerManager class for use by the
   rest of the codebase and the extension point

* TeiidServerManager
 * Provides a default constructor to allow the extension point to create an
   instance
 * Transfers functionality from ModelerCore related to the default server

* org.teiid.designer.spi
 * Adds server manager extension point and interface
TEIIDDES-1776: Be far less aggressive with closing editors

* The TeiidServerManager is responsible for closing all editors on startup
  since the default server version is assigned (so changed from null to
  the restored version).

* Adds in a RESTORING state which can be checked by the closeEditors
  function to avoid closing any editors on startup

* Instead of closing all editors, try and find the resource associated with
  each editor and if the resource's parent project has a modelling nature
  then close the editor. This should confine closures to just modelling
  diagrams.

* DiagramEditorInput
 * May be called and be used for displaying a model, in which case implement
   adaption into an eclipse resource so that it too close be closed if
   required.
Merge pull request #200 from phantomjinx/TEIIDDES-1776-ServerManager

Teiiddes 1776 server manager