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
Use std::make_shared in schedule.cpp

std::make_shared<T>(ctor_args...) yields a std::shared_ptr<T>
constructed as though you called new T(ctor_args...) but does a single
alloc. for both the T and the shared_ptr data. It also avoids the
possibility of resource leaks due to errors in evaluating function
parameters, e.g.

some_func(std::make_shared<T>(args...)); // is safer than
some_func(std::shared_ptr<T>(new T(args...)));
Merge pull request #8 from ajbennieston/use-make-shared

Use std::make_shared in schedule.cpp
Merge branch 'test' of https://github.com/ajbennieston/yejong into ajbennieston-test