Updated cooling code and added compressor device support plus some other small changes

Had to refactor output control to move some logic out.  Essentially, I moved the logic out of output control and into a class called OutputDevice.  Logic remains pretty much the same, but doing this allowed me to create a new kind of OutputDevice - one for a compressor based cooling device that can't handle duty other than 0 and 100.  It also cleaned up some of the code in OutputControl because the cooling device and heating device were pretty much the same.  For now, I needed to add a quick way to add a cooling device by having it's name start with cool_ - a hack for now, i know, but I have a brew that needs fermentation, so i needed to get this in there.

Other changes - 
BrewServer.java
I added a way to change the base directory so that i can test inside netbeans using environment variable (ELSINORE_ROOT)
I added a way to turn debug on using environment variables (ELSINORE_DEBUG)
I also fixed the way the logger was getting initialized so that it didn't output log messages twice

 
I updated the code to check null on the gpio during each initialze check, if it's null then it will disable the SSR