Use a custom shuffle serializer.
Specify serializer on a per shuffle basis.
Make match exceptions serializable.
Fixed ExtractOperator with the new shuffle serializer.
Merge branch 'perf' of github.com:rxin/shark into perf

Conflicts:
	src/main/scala/shark/execution/ExtractOperator.scala
Merge branch 'master' into perf

Conflicts:
	project/SharkBuild.scala
	run
	src/main/scala/shark/execution/CoGroupedRDD.scala
Merge branch 'master' into branch-0.8
Merge branch 'master' into branch-0.8
Fixed the compilation error in SortSuite.scala.
SHARK-138: JoinOperator outputs result of standard objects.
Add a test case for SHARK-138.
Changed Spark version to 0.7.2 so it can be pulled from Maven.
Merge branch 'master' into branch-0.7
Adding variable length integer encoding to ShuffleSerializer.

Also, some minor style cleanup.

Conflicts:
	src/main/scala/shark/execution/serialization/ShuffleSerializer.scala
	src/test/scala/shark/SerializationSuite.scala
Renamed ShuffleSerializerSuite.
Merge branch 'master' of github.com:amplab/shark

Conflicts:
	src/test/scala/shark/SortSuite.scala
Fixed the problem that ShuffleSerializer does not always read the full
bytes and as a result returning negative byte array len.
Broke ReduceKey into two classes (ReduceKeyMapSide and
ReduceKeyReduceSide) so on the reduce side, we don't need to have an
extra level of indirection (BytesWritable). This can save the amount of
memory needed for joins and aggregations.
Merge branch 'master' of github.com:amplab/shark into branch-0.8
SHARK-92: Queries with limits will launch one task at a time.