[SPARK-2871] [PySpark] Add missing API

Try to bring all Java/Scala API to PySpark.
What countApproxDistinct() need is the hash code of items, so this means that we create a hash code for Python objects by hash(pickle.dumps(obj)), so I think this could work.