Put logic for fetching/saving data from/to persistent source into separate object. Refactor Store and Collection object to use callbacks instead of direct returns in order to lay the groundwork for asynchronous sources.
Implement CloudSource
Update tests to use the new api with callbacks
Use uuids for identifying records between remotes; Use 'updated' property for keeping track which version of a record is more recent; When removing records, use 'deleted' property instead of completely removing them; Merge records with the same uuid when adding them to the collection
Rename 'deleted' property on record object to 'removed'
Delete all properties except uuid when removing record, not only name, category and fields
Initialize records property in Collection constructor
Use the 'add' method when fetching data instead of simply replacing the records property
Minor correction on 'add' method
Update documentation
Implement sync method for synchronizing a collection with a remote source
Refactor Source to be more generic in order to work with other classes (like Categories or Settings)
Put Source, CloudSource and LocalStorageSource into separate modules
Put Categories object into separate module
Use Source object for fetching/saving categories
Implement Settings object
Refactor the apps _ready_ method to use the new module structure
Minor refactor for more consistency
Minor bugfixes
Add synchronize option to main menu