Handle null, refs, and singletons in abstract open-sum unpickler

Also fixes a bug in the runtime unpickler where the order in which
fields are unpickled could be changed, leading to a crash in the
binary pickle reader.