Improve CMake and reduce include path
See the documentation for build instructions
Add three Filter to optimise the pipeline architecture
Add two Data to optimise the pipeline architecture
Add json to describe minimal Pipeline architecture
Fix function having no return value because missing throw
Fix CMake debug target names
Preperation for optimisation

Add primitive configuration file loading over program argument
Add data loss / skip to opti_end
Add optimisation info
Add optimisation stats to glfw_sink, opencv_source and image data
Change end condition of OptiEnd filter
Change camera resolution to 1280x720 (XPS-15)
Replace three mutex read write solution with condition variable
This allows for concurrent read access
Change FilterCore swap implementation
Rename pipe swap() to flush()
Best sequential implementations
Parallelised opencv_image_source
Parallelised rgb_to_gray
Parallelised find_edgels
Parallelised glfw_image_sink
Add automatic scaling

This implements a (somewhat primitive) auto scaling function for the
filter. The FilterCore will ask the Pipes it is connected to for a
scaling recommendation and according to this and its own knowledge it
will scale (add or remove) a thread used to do the work in the run
function.

The scale_up and scale_down functions have to be overloaded for this
Cleanups

Fix threading error
Change frame retrieval from C to C++ way of OpenCV
Add resolution support to OpenCVImageSource
Merge branch 'optimisation' into pipeline-dev