[SPARK-2515][mllib] Chi Squared test

No case class features are used, especially pattern matching. This case class will extend `Product5` and make it impossible to add a field, for example, whether correction is used or not. Also, with a case class, it is very hard to add a static method. We might want to write the test result to JSON and later parse it back. A natural choice would be `ChiSquaredTestResult.fromJSON(json: String)` but it is very complicated to match the type signature generated by Scala's compiler. We had this problem with `LabeledPoint` in MLlib, which is a public case class.