ARIES-1252 Support custom content in subsystems/.esa files

Custom content in .esa files is handled via Whiteboard service handlers.
To add a handler for custom content, register a org.apache.aries.subsystem.ContentHandler service. This service will be called back for install/start/stop/uninstall actions to be performed.

The service must be registered with the service property
  org.aries.subsystem.contenthandler.type
to declare the content type that it should handle. This allows to register handlers for content types different than the default osgi.bundle/osgi.fragment and osgi.subsystem.* ones.

For more details take a look at the CustomContentHandlerTest.testCustomContentHandler() itest. This creates an .esa file that contains a bundle and also a custom content file called 'custom1.sausages'. The custom content is declared in the Subsystem-Content header via the standard 'type' attribute. To link it with a resource in the .esa also provide the embedded-resource attribute, e.g.:
Subsystem-Content:
  customContent1;embedded-resource=custom1.sausages;type=foo.sausages

Using a proper resource type (rather than directly using the file name extension) makes it possible to also provide this custom resource from a repository if needed.

The CustomContentHandlerTest has a test content handler that is called back with the content of the resource, its name, the current subsystem and the coordination.
Providing the coordination allows the custom handler to define a compensation in case the installation fails elsewhere, or fail the
installation itself.

In addition, this commit also provides support for handling configuration files as custom content. Two different configuration file types are supported. Plain properties files (which are limited to string values) and the Felix ConfigAdmin config file format, which supports other datatypes as values [1]. 

To embed a Felix config admin file for PID org.foo.Bar, use felix.cm.config as the resource type as the following in the Subsystem-Content header:
 org.foo.Bar;embedded-resource=org.foo.Bar.cfg;type=felix.cm.config

To embed a properties configuration file for PID com.blah.Blah declare it with the osgi.config.properties type:
  Subsystem-Content: com.blah.Blah;embedded-resource=com.blah.Blah.cfg;type=osgi.config.properties

The ConfigAdminPropsFileContentHandlerTest shows this in action.

[1] See the javadoc of http://svn.apache.org/repos/asf/felix/trunk/configadmin/src/main/java/org/apache/felix/cm/file/ConfigurationHandler.java for syntax.



git-svn-id: https://svn.apache.org/repos/asf/aries/trunk@1642910 13f79535-47bb-0310-9956-ffa450edef68