[SPARK-4795][Core] Redesign the "primitive type => Writable" implicit APIs to make them be activated automatically

Try to redesign the "primitive type => Writable" implicit APIs to make them be activated automatically and without breaking binary compatibility.


This is an example of breaking source compatibility, although it's used the implicit `intToIntWritable` occasionally. "_.get" => "intToIntWritable(_).get".