[SPARK-1987] EdgePartitionBuilder: More memory-efficient graph construction

https://issues.apache.org/jira/browse/SPARK-1987
To save overhead of Edge objects, separate an array of Edge objects into three arrays of srdId, dstId and data, for later EdgePartition(srcIdsTrim, dstIdsTrim, dataTrim, index, vertices).
To sort arrays directly, I use [ParallelSorter](http://cglib.sourceforge.net/apidocs/net/sf/cglib/ParallelSorter.html) from mockito.cglib 

Can't compile at the moment and I don't really know to solve.

```
[info] Compiling 8 Scala sources to /home/xd/Developer/spark/graphx/target/scala-2.10/classes...
[error] /home/xd/Developer/spark/graphx/src/main/scala/org/apache/spark/graphx/impl/EdgePartitionBuilder.scala:49: type mismatch;
[error]  found   : Array[Array[_ >: ED with Long]]
[error]  required: Array[Object]
[error] Note: Array[_ >: ED with Long] <: Object, but class Array is invariant in type T.
[error] You may wish to investigate a wildcard type such as `_ <: Object`. (SLS 3.2.10)
[error]     val sorter = ParallelSorter.create(edgeArray)
[error]                                        ^
[error] one error found
[error] (graphx/compile:compile) Compilation failed
[error] Total time: 5 s, completed Sep 18, 2014 9:01:14 PM
```