gplugin/gplugin

Add an unloadable property to GPluginPluginInfo and add a shutdown parameter to gplugin_unload.

Add an unloadable property to GPluginPluginInfo and add a shutdown parameter to `gplugin_unload`.

This allows plugins that can only be shutdown once to handle things properly. Examples of this are basically anything that pulls in another library that doesn't allow you to `_init` and `_uninit` more than once.

Testing Done:
Ran the unit tests and gplugin-query.

Reviewed at https://reviews.imfreedom.org/r/943/
summary('tcc', get_option('tcc'), section : 'Loader Support', bool_yn : true)
if get_option('tcc')
GPLUGIN_TCC_SOURCES = [
'gplugin-tcc-core.c',
'gplugin-tcc-loader.c',
'gplugin-tcc-plugin.c',
]
GPLUGIN_TCC_HEADERS = [
'gplugin-tcc-loader.h',
'gplugin-tcc-plugin.h',
]
if not compiler.has_header('libtcc.h')
error('libtcc.h not found')
endif
TCC = compiler.find_library('tcc')
gplugin_tcc = shared_library('gplugin-tcc',
GPLUGIN_TCC_SOURCES,
GPLUGIN_TCC_HEADERS,
name_prefix : '',
dependencies : [TCC, gplugin_dep],
install : true,
install_dir : get_option('libdir') / 'gplugin'
)
endif # tcc
subdir('tests')