[SPARK-2359][MLlib] Correlations

Implementation for Pearson and Spearman's correlation.
It is not just for low maintenance cost. A strict contract also helps users understand exactly what to input and what to expect. For the fault tolerance, there are many ways to break Spark by putting an extra "s" somewhere. Let's not worry too much in this PR. If we find a mismatch at runtime, throw an error and list available methods.

Btw, I like git's solution. You cannot use "git commits" for "git commit" but git will suggest:
~~~
Did you mean this?
	commit
~~~
Anyway, let's not spend time on this auto-suggestion feature either. Please update the PR with strict string matching. Thanks!