[server] plugin namespace dir gets access to parent plugin dir

Signed-off-by: Denis Zalevskiy <denis.zalevskiy@jolla.com>
grouping class declarations

Signed-off-by: Denis Zalevskiy <denis.zalevskiy@jolla.com>
[metafuse] FuseFs::release() and support for custom fuse main()

Signed-off-by: Denis Zalevskiy <denis.zalevskiy@jolla.com>
[refactoring] namespace statefs::server for implementation

Signed-off-by: Denis Zalevskiy <denis.zalevskiy@jolla.com>
doxygen header to each file

Signed-off-by: Denis Zalevskiy <denis.zalevskiy@jolla.com>
bit of git ignorance

Signed-off-by: Denis Zalevskiy <denis.zalevskiy@jolla.com>
[metafuse] DefaultDir::clear()

Signed-off-by: Denis Zalevskiy <denis.zalevskiy@jolla.com>
[server] discrete file poll notification are sent asynchronously

Each provider is supplied with own TaskQueue to process poll notifications
coming from it to avoid deadlocks in provider: slot.on_changed is called
synchronously but fuse can request data from file when this method is not
returned and will not return until data returned. If provider is locking slot
and data with the same lock it results in a deadlock. To simplify life of
providers statefs server processes changed notifications asynchronously

Signed-off-by: Denis Zalevskiy <denis.zalevskiy@jolla.com>
refactoring: PluginsDir methods outside of class declaration

Signed-off-by: Denis Zalevskiy <denis.zalevskiy@jolla.com>
[server] graceful shutdown on some signals

first providers task queues are stopped and then fuse session is exited as
always. Code is extraced from fuse source code and modified to perform stop()

Signed-off-by: Denis Zalevskiy <denis.zalevskiy@jolla.com>
[examples] added one more example: basic

It is suitable for tests: it provides analog property "rand", discrete "counter"
and write-only "dt". "rand" outputs pseudorandom number, "counter" - counter
increasing each dT usec (default is 100), "dt" allows to change dT

Signed-off-by: Denis Zalevskiy <denis.zalevskiy@jolla.com>