gplugin/gplugin

76d43734c071
Add a desired-state property to GPlugin.Plugin

This allows us to track what state the user wanted a plugin to be in. The use
case here is, I want to disable a plugin, but the plugin can't be cleanly
unloaded. The plugin returns FALSE from its unload function with an error
stating as such.

For a GPlugin consuming application this creates a dilema where the user can't
actually disable this plugin, because as far as everyone knows, that plugin
should be loaded. With this new property, the consuming application can then
check if the desired state is set to loaded before saving it to a list of
plugins to that should be loaded at the next launch.

Testing Done:
Updated the loader unit tests to make sure that the property is being set properly by `GPluginLoader`.

Reviewed at https://reviews.imfreedom.org/r/1200/
# Dependencies
GPlugin depends on the following at a bare minimum:
* glib-2.0 >= 2.40.0
* gobject-introspection, libgirepository1.0-dev
* meson >= 0.42.0
* gettext
* help2man
* a C compiler
A full build (enabled by default) depends on the following:
* gtk-3
* python3-dev, python-gi-dev, python3-gi
* libperl-dev, libglib-perl, libglib-object-introspection-perl
* liblua5.1-0-dev, lua-lgi
* valac
All of these packages and their development headers need to be installed
prior to building GPlugin.
# Building
GPlugin uses [meson](https://mesonbuild.com/) as its build system. As such
compiling is a little bit different than your typical `./configure`, `make`,
`sudo make install`.
Meson requires you to build in a separate directory than your source. As such,
these instructions use a separate build directory.
To compile you need to run the following commands:
```
meson build
cd build
ninja install
```
If you want/need to tweak the build system (to enable/disable certain loaders)
you can do so at any time by using `meson configure` in the build directory.