[SPARK-2851] [mllib] DecisionTree Python consistency update

Added 6 static train methods to match Python API, but without default arguments (but with Python default args noted in docs).

Added factory classes for Algo and Impurity, but made private[mllib].

CC: @mengxr @dorx  Please let me know if there are other changes which would help with API consistency---thanks!
minor: To have consistency across different languages is not the only purpose to add this method. Using easier types is also more user-friendly. I would suggest removing `, for consistency with Python API` and add `We recommend using trainClassifier and trainRegressor` in the doc of the previous `train` method that takes `Algo` and `Impurtiy`.