[MLLIB] [spark-2352] Implementation of an 1-hidden layer Artificial Neural Network (ANN)

The code contains a multi-layer ANN implementation, with variable number of inputs, outputs and hidden nodes. It takes as input an RDD vector pairs, corresponding to the training set with inputs and outputs.

Next to two automated tests, an example program is also included, which also contains a graphical representation.
How common is it to have different number of nodes in the hidden layer? I am wondering whether there should be support for a simpler method ```def train(rdd, numNodesHiddenLayers, maxNumIterations)``` and perhaps even a simpler ```def train(rdd)``` with good default settings to help users get started.

@mengxr @jkbradley Would the upcoming MLlib API feature make this suggestion moot with support for default parameters?