big code refactoring, disentangling packages

This is what I've done, mainly in appium-uiauto and appium-instruments packages:

- moved ios command proxy logic from appium-instruments to appium-uiauto
- moved the callback logic out of appium-instruments
- appium core is now coordinating the 2 packages, without them having to know about each other.
- fixed some flaky tests