[SPARK-4062][Streaming]Add ReliableKafkaReceiver in Spark Streaming Kafka connector

Add ReliableKafkaReceiver in Kafka connector to prevent data loss if WAL in Spark Streaming is enabled. Details and design doc can be seen in [SPARK-4062](https://issues.apache.org/jira/browse/SPARK-4062).
Can you replace this with a while loop? Scala's for loops are less efficient that plain old while loop. 

http://dynamicsofprogramming.blogspot.co.uk/2013/01/loop-performance-and-local-variables-in.html

Not sure how much performance different it is, but better to use while loop any ways