Change configuration format to get rid of settings on OutputWriters. Instead be explicit about settings for each output writer. This should allow to simplify quite a bit the code related to settings, have OutputWriter self document their options (well, you still have to look at the code).

While the code compiles and should be iso functional, this refactoring is not completed yet. Only BaseOutputWriter has been refactored (with impacts on others classes). More work needs to be performed.

The refactoring is backward compatible. This introduces a bit too much work in the constructor, which is not terribly readable. Partly that's the price to pay for backward compatibility, partly this could be cleaned up and abstracted away.
GraphiteWriter follows the pattern introduced in BaseOutputWriter

Most interesting class in this commit is GraphiteWriter, the rest is just there to follow the changes.
GangliaWriter follows the pattern introduced in BaseOutputWriter
LibratoWriter follows the pattern introduced in BaseOutputWriter

Slowly, slowly ...
Log4JWriter follows the pattern introduced in BaseOutputWriter
OpenTSDB writers follows the pattern introduced in BaseOutputWriter

Note that error reporting via lifecycle / validation exceptions is significantly worse than previously. This has been done to prevent constructors from being overly complex. Re introducing good error checking without too much complexity would be easier if we completely removed the settings Map, but that would introduce a non backward compatible change to the JSON file format.
RRD writers follow the pattern introduced in BaseOutputWriter
SensuWriter follow the pattern introduced in BaseOutputWriter.

Also made Socket tests a bit more robust by using random free TCP port instead of fixed one.
StackdriverWriter follow the pattern introduced in BaseOutputWriter.
StatsdWriter follow the pattern introduced in BaseOutputWriter.
Merge pull request #185 from jmxtrans/configuration-format-change

Change configuration format to get rid of settings on OutputWriters