Upon closer look, I experience some trouble with your solution regarding problem 3 (as exemplified by the ui-autocomplete element):
After having selected a city, try selecting another city. This does not work for me because the ui-autocomplete does not close the second time.
More generally, stopping event propagation may not be the best idea. What if other plugins define event handlers for the stopped events?
Your solution works for ui-autocomplete, and it is easy to extend to other elements/widgets if they are known in advance. But what if I want to create a SM-based component that can be used with <i>any</i> widget in it?