Turbo Dijkstra. Finding Single-Source Shortest Paths on Planar Graphs with Nonnegative Edge Weights in Linear Time