Use localForage for async storage when possible

Convert all localStorage calls to localForage calls, using a callback pattern to get/set data so IndexedDB can be used behind-the-scenes to improve the performance of the app where possible.