[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).
Shouldnt this throw an error and the receiver be stopped? If offset cannot be committed isnt it a wrong execution that should not continue at all? If that is the case, then please call `stop(errorMessage)`