[STREAMING] SPARK-1730. Make receiver store data reliably to avoid data-loss on exec...

...utor failures.

Added a new method in Receiver, ReceiverSupervisor, ReceiverSupervisorImpl to store the data
and callback a supplied function with a given argument.
Calling callback on the same thread that is doing the block pushing may not be the best idea. If the callback does something time consuming, then it will halt all the block pushing. We can go with this for now, but lets make sure that the Spark Sink's callback is not time consuming.