Default worker childopts: GC logging, IPv4, -server; fixes #492
* Enable verbose GC tuning into {storm.home}/logs/gc-worker.log.N, capped at 100k
* added a new childopts interpolant, '%STORMHOME%', set to storm.home property at runtime.
* put example production childopts in the storm.yaml.example
* Added the 'preferIPv4Stack' setting, to make storm not bind to ipv6 interfaces by default
Disruptor queue metrics (#613)
* Added new metric type, 'StateMetric', to report direct metrics of anything that meets the IStatefulObject interface
* Added methods for population, capacity, and read/write head positions to Disruptor Queue; gave it a getState() to make it IStatefulObject
* Register the transfer queue and the send and receive queues for spouts and bolts.

We cheat and register the transfer queue in executor.clj because within a Java implementation of the bolt (specifically, the System bolt), we don't have access to the executor data -- we need a TopologyContext, which is only prepared for tasks. If there's a way to get this, please advise.
fix topology.metrics.consumer.register validation: Map, not String
The topology.metrics.consumer.register is a list of hashes, but its schema was StringsValidator. Added a 'MapsValidator' (list of Map) and fixed the schema.
LoggingMetricsConsumer dumps metrics to log file
* Added a LoggingMetricsConsumer example of a MetricsConsumer. Use it by adding 'conf.registerMetricsConsumer(LoggingMetricsConsumer.class);' when you construct your topology.
* Added a dedicated appender to the example logback/cluster.xml called METRICS.
  Its log format omits the class and priority since with the dedicated appender those are redu
toString() methods for key components
Logging is pretty painful when you can't tell what is what. I've added toString methods to core components like the acker, TridentSpoutCoordinator, etc; where there wasn't one before, I also added a string identifier (_id, usually) attribute.
Testrig: added tracing statements at critical places in the code.