Start of the Darwin Camera porting, currently still ugly as sin.
Improvements and fixes to DarwinCamera class:
* create a new NUImage for each emit()
* DarwinCamera.h no longer needs shared/messages in the include path
* use std::unique_ptr instead of regular pointers
* throw std::runtime_error with descriptive error messages on failure instead of std::exception
Added a simple test for DarwinCamera
Grabbing an image from the camera marked as Single
Code style fixes and a fair bit of dead code pruning
Modified so that the code will be statically compiled. This will make the resulting executable faster and remove the need for external libraries on the system

We still need to find a way to dynamically link libgcc as it contains system calls that must be dynamic
Revert "Modified so that the code will be statically compiled. This will make the resulting executable faster and remove the need for external libraries on the system"

This reverts commit d4fd6dad550954131202a1c169f0f1e013ade517.
Gutted NUImage to create much simpler Image class
Fixed mutexes not actaully being locked in UART.cpp
Merge remote-tracking branch 'origin/feature/DarwinCamera' into develop

Conflicts:
	CMakeLists.txt
Added DarwinCamera to main
Added lib mechanism with jpge
Changed module CMake system to use includes and removed repeated module code
Added ColorModelConversions and changed modules to use a common included CMake file
Merge branch 'feature/DarwinCamera' into develop
Removed not-working ioctls from DarwinCamera, replaced NUImage with Image class
Changes to make the port compatible with the latest changes for NUClear
Missed a pointer change
There was another pointer hiding in a unit test
Temporary (hopefully) fix for getting the tests to build. Ideally there should be per module dependencies