Improve JS structure for deck editing

- Card and CardSaver objects encapsulate data and persistence logic
- More succinct, named callbacks