object picking for all render styles

each object (atom, or residue for trace-based styles) is assigned
a unique object ID. For picking, objects are rendered into an
offscreen buffer using a hash function to map the object ID to a
color. By reading back the pixels around the mouse cursor, the
color can be mapped back to an actual picked object.

We are still missing functionality to free object IDs which are
no longer in use. That's coming next.