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.
Conversion from boolean to number implemented on OutputWriters.

Added a new property to BaseOutputWriter to control the conversion.

Documentation needs to be updated accordingly, but code seems to be sound.
Merge pull request #185 from jmxtrans/configuration-format-change

Change configuration format to get rid of settings on OutputWriters
Remvoed live check on Sockets.

This check is problematic as it waits 100[ms] for a timeout, which is a very, very long time once you have some traffic.

This PR might fix #123 andfix #190. Note the emphasis on the _might_. I've had similar problems with JMXTrans that have been fixed by removing this check, but I have not enough information on those issue to ensure this is the same problem.
Added unit test of JmxConnectionParams to validate hypothesis of issue #190.

Short story, seems that hashCode() implementation is good, at least in HEAD.
Added unit test of JmxConnectionParams to validate hypothesis of issue #190.

Also added tests for equals() method while I'm at it ...
Merge pull request #189 from jmxtrans/conversion-of-booleans-to-numbers-by-output-writers

Conversion from boolean to number implemented on OutputWriters.
Merge pull request #191 from jmxtrans/simplify-check-on-socket-factory

Remvoed live check on Sockets.
Merge pull request #192 from jmxtrans/jmx-remote-pool-not-reusing-connections

Added unit test of JmxConnectionParams to validate hypothesis of issue #190.
Make JMXConnectionParams.hashCode() and equals() robust to array environment values.

This is a very ugly workaround which fixes #190. To make sure arrays with same parameters are treated as equals, we convert them to lists in the hashCode and equals methods. We could improve performance by caching the result (environment is immutable) but as environment is expected to be small, the gain is probably not worth the additional complexity.
Merge pull request #193 from jmxtrans/jmx-remote-pool-not-reusing-connections

Make JMXConnectionParams.hashCode() and equals() robust to array environment values.