Shuffle Performance fix: Use netty embeded OIO file server instead of Co...

...nnectionManager

This patch provides an alternative way to do shuffle. Basically it uses an embeded netty OIO file server to serve blocks to BlockManager instead of the current message exchanging ConnectionManager.  We provide an option for user to choose between the two alternatives. Set system property "spark.shuffle.use.netty=true" to enable this feature. Default is disabled. 
In our tests using netty can speedup jobs from 2x~5x. 
BTW, I have to use a lot of java implementations when using netty because scala 2.9.2 has a bug (please refer to https://github.com/netty/netty/issues/781). They can be reimplemented with scala if we upgrade scala to 2.10x