StringInputRowParser: Treat dimensionExclusions case-insensitively
UniformGranularitySpec: Only return bucketInterval for timestamps that legitimately
overlap our input intervals
Rework DeterminePartitionsJob in the hadoop indexer

- Can handle non-rolled-up input (by grouping input rows using an additional MR stage)
- Can select its own partitioning dimension, if none is supplied
- Can detect and avoid oversized shards due to bad dimension value distribution
- Shares input parsing code with IndexGeneratorJob
modify cacheBroker interface to implement bulk-get
don't let timeout skew benchmark stats
implement bulk get test
fix duplicate keys, shutdown gracefully and make sure we check all multiget keys in memcached benchmark
fix interrupted thread
replace Pair<String, ByteBuffer> with NamedKey
rework code pulling from cache to be more readable
rename cacheBroker -> cache
simplify MapCache
fix cache not preserving timezone information
DeterminePartitions follow-up

HadoopDruidIndexerConfig:
- Add partitionsSpec (backwards compatible with targetPartitionSize and partitionDimension)
- Add assumeGrouped flag to partitionsSpec

DeterminePartitionsJob:
- Skip group-by job if assumeGrouped is set
- Clean up code a bit
Merge branch 'master' into determine-partitions

Conflicts:
	indexer/src/main/java/com/metamx/druid/indexer/IndexGeneratorJob.java
add test for timezone
fix expected object type
compare result timestamp based on millis + utcoffset
match query interval to granularity for this test
timezone support in groupby query