Update query() to be either in streaming mode or non-streaming mode

These changes were necessary to enable streaming mode to pull back large amounts of data (>90000 contacts) via calls to getNextUrl.  query() is now either in streaming mode or non-streaming mode.  When in streaming mode, no callback is used and instead stream events are emitted.  When in non-streaming mode, callback is used for control flow.