[WIP][SPARK-2097][SQL] UDF Support

Remaining:
 - [x] Python Support
 - [x] Python Test cases
 - [x] Move out of hive
 - [ ] scala Test cases
 - [ ] Input coercion?
we only support Pickle in JVM, SchemaRDD can only use PickleSerializer or BatchedSerializer(PickleSerializer()). It's better to use BatchedSerializer(PickleSerializer(), 1024) in everywhere.