We've changed the way plugins are activated, and removed the notion of
deactivated plugins.
Now plugins activate asynchronously.
When calling a plugin, it will be activated if it wasn't, and the call will wait
for the plugin to be fully activated.
* Improved debugging (back to using Flask's built-in mechanisms)
* Recursive model loading from json
* Added DEVPORT to Makefile
* Accept json-ld input. Closes#16
* Improved Exception handling in client
* Modified default plugin selection to only include analysis plugins
* More tests
Closes#12
* Shows only analysis plugins by default on /api/plugins
* Adds a plugin_type parameter to get other types of plugins
* default_plugin chosen from analysis plugins
* Added interactive debugging
* Better exception logging
* More tests for errors
* Added ONBUILD to dockerfile
Now creating new images based on senpy's is as easy as:
```from senpy:<version>```. This will automatically mount the code to
/senpy-plugins and install all dependencies
* Added /data as a VOLUME
* Added `--use-wheel` to pip install both on the image and in the
auto-install function.
* Closes#9
Break compatibilitity:
* Removed ability to (de)activate plugins through the web
* The API has also changed, there are new parameters to send the
context as part of the headers.
* Improved tests
* PEP8 compliance (despite the line about gevent)
Moved from Yapsy again (it is not flexible enough), now we use a
custom solution.
The activation and deactivation of plugins is asynchronous, so
that plugins that take a long time don't interfere with the rest.