Bring in guice 3 as a maven dependency.
Have some injection infrastructure.

The Injector used by storm tasks is a lazy-initialized static member of HBaseComponent.  When created lazy, the bindings are supplied by the (currently empty) ProductionModule.

A package-private static setter is present for tests, which is exploited by HBaseComponentFixture.  The (empty) bindings it employs are taken from an anonymous module that can bind dependencies to various fixture mocks.

Injection takes place within start(), which both HBaseSpout and HBaseBolt call in their prepare-like events.

Since Storm ultimately creates component instances, we obviously can't use Guice to construct them.  Instead we use Injector#injectMembers (which is designed for this exact case) to supply dependencies of existing instances.