SPARK-1544 Add support for deep decision trees.

etrain and I came with a PR for arbitrarily deep decision trees at the cost of multiple passes over the data at deep tree levels. 

To summarize:
1) We take a parameter that indicates the amount of memory users want to reserve for computation on each worker (and 2x that at the driver).
2) Using that information, we calculate two things - the maximum depth to which we train as usual (which is, implicitly, the maximum number of nodes we want to train in parallel), and the size of the groups we should use in the case where we exceed this depth.

cc: @atalwalkar, @hirakendu, @mengxr