Merge Spark master into graphx

A manual merge with a lot of conflicts. Would be great if one of you (probably @jegonzal) can take a look at the diffs (mainly on hash table related part)