Towards consistent null handling

This PR includes a number of fixes to handle nulls more consistently on the query side.  These fixes were done to support a user who is leveraging the schema-less capabilities of Druid.  It's sufficient for all needs we've currently found, but I am not certain that it is comprehensive just yet.

Fixes #665 in the following manner

- return null values for all matching rows when a columns is missing (e.g. for groupBy, topN)
- treat empty string and null the same, but always return null
- allow specifying null in filters

- for multi-value dimensions, if the dimension has multiple values:   
     1. dim extraction returns null -> null
     2. missing column -> null
     3. [] -> null
     4. [""] -> [null]
     5. ["", "a"] -> [null, "a"]

- for single value dimensions
    1. missing column -> null
    2. dim extraction returns null -> null
    3. [""] -> null
    4. [] -> null



Also, on the PR is the addition of a context parameter on timeseries queries that allows it to ignore empty buckets.  I realize that this should've been separated into two PRs, but there is a bit of context behind these commits that makes that difficult.  It's just a few changes in `TimeseriesQuery`, `TimeseriesQueryEngine` and `TimeseriesQueryRunnerTest`
If your going to have a check of two things every time I would create a utility method with a clear name that should always be used to validate the empty state.

Cheers,
Steve

> On Dec 23, 2014, at 6:55 PM, Fangjin Yang <notifications@github.com> wrote:
> 
> In processing/src/main/java/io/druid/segment/ColumnSelectorBitmapIndexSelector.java:
> 
> > @@ -114,6 +114,9 @@ public ImmutableBitmap getBitmapIndex(String dimension, String value)
> >    {
> >      final Column column = index.getColumn(dimension);
> >      if (column == null) {
> > +      if (value == null || "".equals(value)) {
> Okay that's fair. The thing I was worried about is when we only check value == null or ''".equals(value) and forget the other, but that's just something to keep in mind when we work on Druid.
> 
> —
> Reply to this email directly or view it on GitHub.
>