allow snapping to like edges

this allows snapping e.g. a left edge to a left edge, as opposed to an
opposite edge.
update resize detection

this updates the dock frame to only inform the dock manager of a resize
if the frame has actually changed size.
Make graph traversal more efficient

This update the proximity graph to use a tag marker for indicated
visited nodes, instead of heap allocating a set.
Update Z-order handling for linked frame groups

If a frame is raised which has a linked frames, the other frames in the
group are raised as well, maintaining their relative Z-order.
handle the toplevel change of a dock container

This properly adds/removes a dock container from the proximity handler
when the toplevel state of the container changes.