Add a helper function to get kimchi python package directory

To avoid duplicate code, this patch adds a helper function to get
kimchi python package directory. It adds a new substitution for
kimchi package directory. It will be used in the following
plugin support patch to get the directory of plugins.

Signed-off-by: Mark Wu <wudxw@linux.vnet.ibm.com>
Add the missing Makefiles for plugins support

Commit ebf366 added plugins directory, but forgot to include Makefile.am
for it. We don't expect the sample plugin be installed on systemd, but it
should be included in the source tar package.

Signed-off-by: Mark Wu <wudxw@linux.vnet.ibm.com>
Add a plugin mechanism for Kimchi server

This patch adds a plugin mechanism for kimchi's backend. It makes
the server mount the plugin application at its given uri according
to the configurations. The plugin could be any cherrypy application.
It also can implement its own REST api by reusing the kimchi's
controller code.

Signed-off-by: Mark Wu <wudxw@linux.vnet.ibm.com>
Move API schema loading to the initialization of application

It moves API schema loading to the initialization of application
for better support plugin's schema validation. With this change,
the controller doesn't care about the schema loading. So even for
plugin's schema, it can just get from the application and don't
need care about how to load it.

Signed-off-by: Mark Wu <wudxw@linux.vnet.ibm.com>
Add a sample kimchi plugin

This patch adds a sample plugin to demostrate how to use Kimchi's
controller code to implement a REST style of application.

Signed-off-by: Mark Wu <wudxw@linux.vnet.ibm.com>
Add test cases for plugin support

This patch aims to verify the plugin dispatching and schema
validation work as expected. It doesn't make a full test of
the code in the sample plugin.

Signed-off-by: Mark Wu <wudxw@linux.vnet.ibm.com>