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

 
fixed the check for null inputs.  Name can be null (in fact, it's not really used right now), gpio can be null.  if cycle time is null, it defaults to five seconds.