made arg-list mutator macros accept lists of keys as well as single keys
added rem-plist-val! and set-plist-val! macros
make arglist manipulation macros return place instead of null
fail fast in has-slot? if the object we're inspecting is nil
use defgenerics to avoid style warnings