Pyspark sampling function

This is more of a draft than an actual Pull Request. In the JIRA Josh was proposing to fall back to Python's native random in case NumPy is not installed, while preserving the results. I find that hard to implement given that the random generators used may be very different, although one could emulate drawing values from a Poisson distribution via random.expovariate() I guess. So I was wondering whether we could discuss this here.

Also note that takeSample() is still missing. I wanted to discuss sample() first before coming to that.
Update: added takeSample() based on RDD.scala

JIRA: https://spark-project.atlassian.net/browse/SPARK-651