Maps refactor

I refactored MapRoute in an attempt to create a cleaner implementation.  Used a doubly linked list to be able to refer to polylines that need updating when markers are dragged.