Make ZMQ.Context (and ChangeForwarder with it) true singletons.

ChangeForwarder was being loaded twice (by the child injectors, it turns out) when the coprocessor was started on a second table.  It of course failed to open the needed tcp port and died.

The reason the child injectors were creating the @Singleton-marked forwarder was that it required bindings found only in modules in the child injectors.  Apparently this determines which "singleton" scope actually gets used.

The binding in question was the hbase Configuration object.  Here we have a true semantic problem.  The config is supplied on a per-coprocessor basis, since it contains the coprocessor arguments as specified in the schema.  It's therefore appropriate for each coprocessor to receive its own copy.

On the other hand, we genuinely need access to the hbase config for other, global purposes.  There are therefore two notions of hbase configuration running around.

So, introduce HBaseModule to contain cross-environment root bindings for code in region servers.  Put a global, singleton configuration binding in it, and move the zmq context binding there as well.  Leave the per-coprocessor configuration binding in CoprocessorModule, and use @Named annotations to distinguish between them.