Add simple test framework and some tests for the Job class.
Add tests for Machine class
Convert to std::make_shared() to avoid allocation overhead

This also tidies up the code in main() in a way that doesn't make it
susceptible to memory leaks.
Add tests for Pool class
Merge branch 'test' of https://github.com/ajbennieston/yejong into ajbennieston-test