Formatted source for readability. Converted thread usage to Java 5
executor framework.
Converted to use an adapter pattern. Different device types can now be
used. They will all implement IDevice, and the DeviceAdapterFactory will
be responsible for picking the correct one.

The goal here is to decouple the implementation from its usage. Hide the
details behind the interface, and stuff the ugliness of selecting the
implementation in a single factory class.
Added project settings for formatting, warnings/errors, etc. Cleaned up
code to adhere to these settings. Modified some socket code to use new
Java 7 try-with-resource.
Modified device manager to use the start/stop idiom instead of relying
on the constructor to do everything, then never shutting down its
executors which by default use user threads meaning the program will
hang.
merge