Use ordered set when matching views, such that we keep the order information

Sometime it is desirable to keep the orders of views being match, such as when we are finding subviews of a view. This PR use NSOrderedSet instead of NSMutableSet to make sure order is preserved.