Use beginBackgroundTaskWithExpirationHandler: API

To continue processing the tasks when the app is in the background
Add delegate method for remove queue.
Merge remote-tracking branch 'dealforest/master'
upped version to take note of changes merged in
doco