Move all of the Android code and assets into the mobile_sdk_harness repo on a branch, and from the iOS and Android projects & build scripts refer to shares example code. The intent for this branch is for the example harness repo to demonstrate a reasonable structure for a cross platform application (the behaviour of which will be to run through the various examples), such that we have no DRY fail between platforms and such that we have an example of appliction structure to point to. While the platform specific entry points will neccessarily remain, these should become smaller and as much configuration as possible should be done in a generic 'application host', which should handle switching applications, communicating with the UI in a non-platform-specific way, etc.

Buddy = Jonty D.
Abstract out the UI binding from the iOS RouteMatchingExample - example code now generic and does not require .mm extension for objective-c++ type, and the binding cleaned up such that no longer uses global static binding thunk. Buddy = Salva L.
Rename RouteMatchingView -> RouteMatchingExampleView for consistency.
Abstract out the UI binding from the iOS RouteSimulationExample - example code now generic and does not require .mm extension for objective-c++ type, and the binding cleaned up such that no longer uses global static binding thunk.
Moving now-generic route simulation/matching examples to common src directory and moving examples all into their own directory, as the examples with UI abstractions now have more files than single header & implementation. Also, factor some common behaviour in the iOS UI view implementations out to some utility functions.
Add missing implementation for UIHelpers.
Move the iOS specific code for example view implementation into own directory, make it clear what source is iOS specific for entry point, infrastructure.
Add Android implementation for the AndroidRouteMatchingExampleView, still using the UiThreadToNativeThreadTaskQueue to buffer work from UI to native 'main' thread for now. Now both platforms use same implementation of RouteMatchingExample with specialised UI code.
Wire up the RouteSimulationExample Android view implementation - all cross platform examples now use a shared codebase for the example implementations.
Move remaining Java-specific examples into own directrories under android/jni/Examples/*/ for consistency.
Move all of the example configuration/construction out of the example app, this app just configures its initial camera, registers a set of example factories with a controller, and updates/ticks/processes input to platform. The example app no longer has any platform specific code, and there is now a mechanism via the ExampleController to change example at runtime.
Move ExampleController out to shared src/Examples/ directory.
Move ExampleApp to shared src/ directory.
All android examples now working from same shared infrastructure as on iOS, app code & example switching logic shared between platforms.
Move example logger helper to cross platform code.
Fix up various instances of example bad behaviour such as not unregistering renderable filters on exit, not re-enabling default camera, etc. Can now cycle between all examples (currently wired to double-tap for simplicity of testing).
Clean-up of Android entry point infrastructure. Remove AppWindow, concerns split out to AppProxy to spin main native thread and act as proxy object for Java interaction, AppRunner to co-ordinate display binding with app lifetime, AppHost for configuring platform specific functionality, AppInputDelegate for forwarding navive input to cross platform ExampleApp class. Input messages and synchronization delegated to platform concurrency & messaging types. The Java examples still use their own message bus, next step is to use a message box based on the same messaging pattern as the app lifecycle.
Use a message queue (pumped in AppHost) to send messages from the JNI proxy to the Android examples which communicate with Java. This supports strongly typed messaging, and includes an example which transmits data from Java to c++ (JavaHudCrossThreadCommunicationExample). The example factories are given the shared queue by AppHost.
Add a proxy object for RouteMatching such that the SendMessage() call can be removed from the AndroidRouteMatchingExampleView type, which no longer needs knowledge about the message queue. The proxy is responsible for dispatching the message to this type.
Add a proxy object such that the SendMessage() call can be removed from the JavaHudCrossThreadCommunicationExample type, which no longer needs knowledge about the message queue. The proxy is responsible for dispatching the message to this type.