[SPARK-2314][SQL] Override collect and take in python library, and count in java library, with optimized versions.

SchemaRDD overrides RDD functions, including collect, count, and take, with optimized versions making use of the query optimizer.  The java and python interface classes wrapping SchemaRDD need to ensure the optimized versions are called as well.  This patch overrides relevant calls in the python and java interfaces with optimized versions.

Adds a new Row serialization pathway between python and java, based on JList[Array[Byte]] versus the existing RDD[Array[Byte]]. I wasn’t overjoyed about doing this, but I noticed that some QueryPlans implement optimizations in executeCollect(), which outputs an Array[Row] rather than the typical RDD[Row] that can be shipped to python using the existing serialization code. To me it made sense to ship the Array[Row] over to python directly instead of converting it back to an RDD[Row] just for the purpose of sending the Rows to python using the existing serialization code.

Moves JavaStackTrace from rdd.py to context.py. JavaStackTrace is all about configuring a context attribute, and the _extract_concise_traceback function it depends on was already being called separately from context.py (as a ‘private’ function of rdd.py). The move also facilitates use of JavaStackTrace in sql.py's new collect implementation.
This file sets `__all__` further down on line 100; we should only set it once.  Actually, do you mind just moving the `extract_concise_traceback` stuff to its own file?  There's actually an open JIRA ticket for this ([SPARK-1087](https://issues.apache.org/jira/browse/SPARK-1087)) and if you're going to touch the traceback code anyways now seems like a good time to do this refactoring.  You could name the file something like `traceback_utils.py`.