Map Interface refactoring

@arthurbenemann, this is the continuation of PR #7 in your old DroneRefactor branch.
The branch was updated with the latest from upstream master, and should be ready to merge.

As mentioned in PR #7 note, this pull request abstracts the map interface, and provides a mechanism to define, and use additional map providers.

Currently, the google map provider has the same full functionality as in the latest stable release of DP. 
The OpenStreetMap provider is in the process of being implemented, but should be fairly complete rather soon. 
As such, I would like to start integrating this work into the master branch.

More info about the branch will be posted below.