Fix race condition when updating output buffers
Fix race condition when updating sources

The current implementation has a potential race condition under the following scenario:

Task updater              Driver

                          acquire lock
                          process new sources
                          ...
                          process new sources in lock release code
add new source
fail to acquire lock
 (sources not processed)
                          release lock

This results in new sources not being processed and the query getting stuck
if the task updater never call update sources again and the driver becomes
blocked because data from all current exchanges are consumed
Cap maximum number of remote task callback threads
Add streaming index join support

Conflicts:
	presto-main/src/main/java/com/facebook/presto/operator/InMemoryJoinHash.java
	presto-main/src/main/java/com/facebook/presto/operator/index/IndexLoader.java
	presto-main/src/main/java/com/facebook/presto/operator/index/IndexSnapshotBuilder.java
	presto-main/src/main/java/com/facebook/presto/sql/planner/LocalExecutionPlanner.java
	presto-tests/src/main/java/com/facebook/presto/tests/DistributedQueryRunner.java
Add missing JMX export for RemoteTaskFactory
Fix HashAggregation infinite loop during multiple partial agg flushes