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 (note: there is currently one metric per _task_, each documenting its executor's queue).

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.

Note that the code is (knowingly) not thread-safe: it's possible for the write position to move between getting the read and write head positions, but in practice it shouldn't change the actionable value. We do make sure to get the read and then the write so that it is never an under-estimate of the capacity (or negative).