made rect::intersect{s,ion} accept rects of different type