fix for merge dropping values from scalarValueQueue and not completing during request(..) when the last value emitted was from scalarValueQueue
Remove Comment

This comment is no longer correct. 1420 was resolved.
Synchronize Access

The `wip` variable needs its access to be synchronized. Then it calls drainAndComplete outside the lock.
Merge pull request #1726 from benjchristensen/fix-merge-1723

Fix Merge: backpressure + scalarValueQueue don't play nicely
back pressure support for group by operator
groupByUntil -> groupBy

This collapses groupByUntil and groupBy into a single groupBy operator. The new implementation has 2 major changes:

1) It supports reactive pull backpressure.
2) Child GroupedObservables can be unsubscribed and they will be cleaned up and then new instances for the same key can be emitted, like groupByUntil, except that now instead of passing in a special durationSelector function, the child can be composed using take/takeUntil/etc to cause an unsubscribe.

If the previous non-obvious groupBy behavior is wanted, then instead of unsubscribing, it can be filtered to ignore all further data, which is what the old groupBy used to do when a child was unsubscribed.
Merge pull request #1727 from benjchristensen/groupByWithBackpressure

Proposed groupBy/groupByUntil Changes
Merge remote-tracking branch 'upstream/1.x' into 1.x

Conflicts:
	src/main/java/rx/internal/operators/OperatorMerge.java