[SQL][CORE] SPARK-2102

Adds in an option into the kryo serializer to enable requiring registration

Adds a resource pool in the SparkSqlSerializer code paths to speed up serialization of generic types.
Hey @ianoc - I found the wording here a bit confusing when reading it over. It would be good to say the exact behavior of Kryo if this is set to true (i.e. will it throw an exception if an unregistered class is found?). Also, the `this` in the third sentence, it's a bit ambigugous whether that refers to the registration itself or the default setting of this value. A slight re-word would be :

```
Whether to require registration with Kryo. If set to 'true', Kryo will throw an exception
if an unregistered class is serialized. If set to false (the default), Kryo will write
unregistered class names along with each object. Writing class names can cause 
significant performance overhead, so enabling this option can enforce strictly that a
user has not omitted classes from registration.
```