fix #51; add comments to `ensure-package`
Prior to this commit, we were trying to be far too smart when updating a package's package-local-nicknames: we'd only call `remove-package-local-nickname` on the set difference of the old nicknames and the new nicknames; that is, we would not remove and then reinstall a package-local-nickname which was already present and we wanted to keep. The bug which caused #51 was that the set-difference considered only the nickname, not the package to which it referred. But rather than worrying about accurately computing the minimal set of nicknames to remove, this commit just has `ensure-package` remove all package-local-nicknames, then reinstall the ones it wants. This may be either a performance improvement or regression depending on whether computing set differences is more or less expensive than manipulating package data structures, but my suspicion is that no one cares either way. Also, during the course of my debugging, I [Phoebe Goldman] added a few line-comments to the definition of `ensure-package` so that I could tell what various parts of its body were doing. I'd rather not write those comments again, so I'm including them in this commit. Tests incorporated and changelog updated.