Better path and environment classes.

I decided that the processor count shouldn't be so
tightly tied to the task pool code. So, I moved this
code into a separate Environment class. I created
some new path related classes and stuck all of the
code in a Path class.
Handle zero threads

In order to handle zero threads, I created a singleton task pool...
which basically runs everything on a single thread. I also forgot
to remove/fix getProcessorCount in a previous commit. I also never
fixed the preprocessor directive.
Update README.md