Query Caching and candidate save

Candidates will now try to resubmit every 30 seconds if upload fails.
The app also save the candidates to a file on app exit and try to
submit again when the app is launched.