Cross-tool protocol

- Add CrossToolProtocol
- Refactor Mediator (holds reference to components instead of callbacks)
- Add remote tool mock (for e2e tests)

Test: npm run build:all && npm run test:all
Change-Id: I01a258ba96204883a81fc72a475eb2349e15c6fb
28 files changed