Changed semantics of how objects are saved (untested)

Each object being saved now implements NSCoding protocol, which
provides methods for encoding and decoding data. This allows the
objects to be easily changed, without having to rewrite code for
saving/retrieving from files. Essentially, the NSCoding protocol
recursively archives each object being saved. So when the reminder
manager is being saved, each reminder and associated time is archived
and stored together into a binary file. The same goes for when
unarchiving the reminder manager.