[STORM-607] storm-hbase HBaseMapState should support user to customize the hbase-key & hbase-qualifier

In HBaseMapState, user can specific hbase-qualifier by Options, and the hbase-key is composed by all the keys by multiPut's List<Object> keys.
for example, If I have stream with <deal_id, date, pv>, grouped by <deal_id, date>, then, the hbase-key is composed by<deal_id, date>, the hbase-qualifier is pv.
But when I want hbase-key is deal_id, and hbase-qualifier is pv+date, HBaseMapState can not support this.
==================================================================================
With this patch, user can customize the hbase-key & hbase-qualifier by interface TridentHBaseMapMapper. 

As a old user, can use the old style like this:
HBaseMapState.Options hbaseOptions = new HBaseMapState.Options();
hbaseOptions.mapMapper = new SimpleTridentHBaseMapMapper("pv");

Also, you can customize the hbase-key & hbase-qualifier like this:
public class WithDateHBaseMapMapper implements TridentHBaseMapMapper {
    private String qualifierPrefix;

    public WithDateHBaseMapMapper(String qualifierPrefix) {
        this.qualifierPrefix = qualifierPrefix;
    }

    @Override
    public byte[] rowKey(List<Object> keys) {
        String dealId = String.valueOf(keys.get(0));
        return dealId.getBytes();
    }

    @Override
    public String qualifier(List<Object> keys) {
        String dateStr = String.valueOf(keys.get(1));
        return qualifierPrefix + "_" + dateStr;
    }
}

HBaseMapState.Options hbaseOptions = new HBaseMapState.Options();
hbaseOptions.mapMapper = new WithDateHBaseMapMapper("pv");