Added .DS_Store into .gitignore
Fix modulesChanged arguments to match backbone event arguments
Fix race condition involving localforage
Fix race condition where not all module data has been loaded before showing timetable
Return module from promise in timetable module collection
Check if module exists before modulifying
Use object lookup rather than array lookup for modules
Load selected modules before starting history
Properly pluralize module lesson types
Add typeAbbrev inverse mapping, shift typeAbbrev and typeAbbrevInverse to class properties
Only gitignore app/vendor instead of all vendor directories
Alphabetize .gitignore
Switch to prettier querystring instead of url segment for timetable sharing
Merge branch 'url-sharing'
Navigate to timetable if no defined route matches the current URL
Added IVLE button to the module page
Extract semTimetableFragment to common config module; replace direct usage of json config
Extract fromQueryString into classProperties and rename to fromQueryStringToJSON for clarity
Save query string instead of json representation, namespaced to timetable/:academicYear/sem:semester - same as url
Restore timetable from saved query string, converting from legacy JSON format if saved query string does not exist