Addition of TCollectorUDPWriter and other related enhancements to OpenTSDBWriter

Adding TCollectorUDPWriter, initially written by Kieren Hynd.

Highlights of this update:
* Addition of TCollectorUDPWriter which sends data to OpenTSDB's tcollector
* Change unit tests of OpenTSDBWriter to use mock sockets (via Powermock) in place of real sockets
* Added setting to exclude the host tag OpenTSDBWriter automatically adds to metrics
* JEXL support for defining the metric name from the Result object's properties and a map of type names
* Use of StringBuilder to create the result strings instead of repeated "result = result + more" code
* Sanitization of metric names, tag names, and tag values so that they won't be rejected by OpenTSDB (quotes are removed, all other unsupported characters are converted to '_'.
* Extract configuration and repeat logic from OpenTSDBWriter to OpenTSDBGenericWriter and derive OpenTSDBWriter and TCollectorUDPWriter from the base class.
* Unit test coverage for the writer classes is at 100%.
* Setting added to OpenTSDBWriter to disable addition of the "host" tag to the output.

I'll work on documentation - both the new TCollectorUDPWriter document and updates to OpenTSDBWriter documentation.  They will be very similar.