[SPARK-2969][SQL] Make ScalaReflection be able to handle MapType.containsNull and MapType.valueContainsNull.

Make `ScalaReflection` be able to handle like:

- `Seq[Int]` as `ArrayType(IntegerType, containsNull = false)`
- `Seq[java.lang.Integer]` as `ArrayType(IntegerType, containsNull = true)`
- `Map[Int, Long]` as `MapType(IntegerType, LongType, valueContainsNull = false)`
- `Map[Int, java.lang.Long]` as `MapType(IntegerType, LongType, valueContainsNull = true)`
Oops, I forgot to change the doc.

I think the default value should be `false` because non nullable by default is more natural.
For example, when we think `Map[Int, Long]` variable, it can't contain `null` value.
If we want to add `null` value to the map, we have to declare the variable as `Map[Int, Any]` or `Map[Int, java.lang.Long]` or something like that.
It is the same way when thinking about the data type.

And this is the same as `ArrayType.containsNull`'s default value.