NSCoding NSCopying Round 2

OK, let's try this again.  I still need to test some stuff, so this isn't good to merge yet.