Refactor configuration of sample client

Client can be configured with either a url to a Daisy Online service, a
local media path or a path to a key-value settings file parsable by
glib.
Correct typos in comments and documentation
Add data types and vectors for storing online and offline sources
Add interface methods for adding online and offline sources
Change order of methods to match the order in .h file
Add interface method to start the thread execution
Refactor configuration of clientcore

A service must be added via the add API method and unless no servies has
been added the application will exit immediately when start API method
is invoked.

Serveral services can be added but in order to keep the behaviour same
as before only the first service added is be used.
Parse settings file with glib and add appropriate sources
Add skeleton for MediaSourceManager
Implement logic and tests for MediaSourceManager
Fetch information via MedaiSourceManager in DaisyOnlineNode
Move implementation from .h to .cpp and change order of methods
Add skeleton for dynamic root node
Use RootNode as the new root node in NaviEngine
Send command to automatically open when only one source available
Assign names for rootNode and DaisyOnlineNode
Add utility to check if a given path exists and is a directory
Add utility the check if a given path is a regular file
Add utility to recursively search for files in a path
Create scoped loggers in Utils