MavLink Connection restructuring

Rearchitecturing of the mavlink connection class structure:
* The bulk of the class structure was moved to `Core` to allow reuse of logic in a platform agnostic way.
* Introduced a `Logger` interface that allows logging in a platform agnostic way. Each platform must implement a provides its own `Logger` implementation (i.e: `org.droidplanner.android.utils.AndroidLogger` is the logger implementation for the Android platform).
* Previous code had multiple concurrency issues. The new architecture fixes those issues:
  * Each connection task gets its own thread. One thread for `Connecting & Receiving`, one thread for `Sending messages`, and one thread for `Logging`. The threads communicates with each other, and the main thread using elements of the [`java.util.concurrent'](https://developer.android.com/reference/java/util/concurrent/package-summary.html) library.
  * Along throughput improvement, the new thread structure should fix the `saveToLog` bug.