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`
I might also create a singleton concept of a null column rather than returning an actual null. Then you can get rid of null checks (i.e. use the NULL Object Pattern). 

column = index.getColumn(dimension)
column.entryHasValue(value)

would be a bit cleaner and less error prone.

Cheers,
Steve

> On Dec 23, 2014, at 6:59 PM, Druid Robot <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)) {
> 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
> …
> —
> Reply to this email directly or view it on GitHub.
>