get related documents from browser side

Initial implementation of the mechanism which includes:
- a Document.getRelated operation added to LiveDevProtocol. It retrieves a collection of URLs both for scripts and stylesheets after querying DOM on the browser page and filter those that are external.
- a monitoring mechanism based on MutationObserver interface which sends events for scripts/stylesheets added/removed. MutationEvents are used as fallback for browsers that don't provide support for it. 

There are still some work to do and some TODOs in the code. The main opens that I see are:
- [x] combination of getRelated and monitoring not well defined for the initial sequence 
- [x] start sending monitoring events too early (probably need a queue to collect events until ws is connected)
- [ ] check relationship btw _relatedDocuments at LiveHTMLDocument instance vs. _relatedDocuments at LiveDevelopment. Need to manage context when switching to a different live document in some cases.
- [ ] manage multiple clients (need to take one as a reference assuming DOM is always the same or develop some strategy to manage duplicates and/or potential differences).
- [ ] browser compatibility. I'm new with MutationObserver interface and MutationEvents are being deprecated because of performance issues, need to better understand impact on several versions of desktop/mobile browsers and WebViews. 

@njx / @dangoor, please review this initial implementation as an alternative that we came up with @shahabl and @busykai after analyzing some of the complexities that a server-side approach would have for building relationships among documents (something that the browser already does for us). This is a key mechanism to start building CSS and JS support on top off so it will probably evolve and be refined to address those cases.
It doesn't handle that case at this point, _scanImports should extract nested imports so we can reuse them from _onNodeChanges also. Support for nested imports Is not implemented yet, there is a TODO as part of the function documentation.

This code iterates on hrefs retrieved from _scanImports and includes them on the message body. It also populates _imports with those URLs. It will be used when detecting that the parent styleSheet is removed so we can notify that nested stylesheets are also removed (I can't get  that info from the mutation object)

BTW, I did some clean-up on this code to get it more readable.