Adding in a check to the cmakelist to make sure the compiler supports C++11, otherwise it won't even be able to compile.

Credit to Matthias Vallentin on stackoverflow (http://stackoverflow.com/questions/10984442/how-to-detect-c11-support-of-a-compiler-with-cmake) for this check.
Adding preprocessor ifdef blocks to use Grand Central Dispatch if compiled on Darwin and not to when on anything else.

This was preventing the code from being compiled on anything that didn't have Grand Central Dispatch (almost everything).

Multithreaded support for other OS's will have to come later.
Including <memory> so shared_ptrs can be used, for some reason on Darwin/Clang this wasn't needed but on gcc4.8 it is.
Including png and pthreads as required libraries for CImg.

This was preventing the program from compiling on linux (or maybe just non-Darwin systems)
Removing std::random_device from the random number code. It doesn't want to compile in linux and does not even seem necessary (words that will come back to bite me)