simplify mouse event logic
calculate current point in eventFilter()

This commit allows for updating the altitude marker just before it gets rendered. See next commit.
update altitude marker just before it gets rendered in renderOnMap()

According to their respective render positions, the altitude marker is rendered before the float item.
Before this patch, the altitude marker's state was only updated when the float item got rendered, meaning it was rendered with an old state.
As a workaround, a second repaint request was generated.
With this patch (and with the previous one), the altitude marker's state is now updated just before it gets rendered, avoiding the need for a second repaint request.
rename folder of elevation profile float item
factor out ElevationProfileMarker from ElevationProfileFloatItem

The elevation profile float item, a 2D object, used to render the altitude marker in 3D space.
This makes it impossible to treat the float item as a real 2D object.
By creating a separate item for the altitude marker, this issue can be resolved.

Being able to treat the float item as a real 2D object allows for easier caching for the upcoming OpenGL mode and it allows to introduce a float item layer.
API change: remove AbstractFloatItem::renderOnMap()

While float items are 2D objects, renderOnMap() allowed for rendering other objects in 3D space (geo coordinates).
This creates various issues (see explaination of previous commit).
In order to separate concerns and to give float items a stronger focus, 3D rendering from within a float item is removed via this commit.

No float item in Marble uses the renderOnMap() method any more.
For porting external float items, it is probably a good idea to factor out geo coordinate-based rendering into a separate
GeoGraphicsItem, one of it's derivatives, or a RenderPlugin. See the previous commit for a porting example.
Add bearing calculation.
Provide the direction. Increase update frequency.
Provide the direction.
Fix drawing of custom position markers.

The calculation of the rotation based on screen coordinates was
sensitive to numerical instabilities at high position update
frequencies or low travel speed. Now it uses the direction provided
by the active position provider plugin (see prior commits for the
remaining implementations of direction() in Marble plugins).
Also removed the wrong visibility check (boundary comparison to an
unrelated element) that resulted in missing paintings.
Fix drawing of the default position marker.

The fix is pretty similar to the one in cb6992d3: Calculating the
current rotation based on the screen coordinates of the last two
positions is sensitive to numerical instabilities, so use the
direction provided by the plugin.

Note that this commit and cb6992d3 introduce a less general handling
of map rotations: Only north and south pointing upwards are supported.
Currently that's the case in Marble, but might change in the future
(e.g. OpenGL mode) and needs to be respected in the two rotate() calls
then.
CCMAIL: bbeschow@cs.tu-berlin.de
Provide a proper size hint for the turn instruction pixmaps.
CCBUG: 298946
(cherry picked from commit 948b57f88a97b348ee7e549a8081a22f605ed906)
Commit 37f046a was a bit greedy -- not everything is a roundabout.
(cherry picked from commit bc23b20c7accd19da28287670e2a77dfd63046c3)
Follow up https://github.com/DennisOSRM/Project-OSRM/issues/216

This fixes parsing of routing instructions of the OSRM plugin.
(cherry picked from commit 5393699bb861ff1d9c3d4f281cf8186e92d9dd24)
Fix spherical projection drawing. Separate update and painting.
Add more turn types. Show via points in the instruction list.
(cherry picked from commit d33b55a6f7252abf397fe29f7c09bb17d25f485d)
Handle 'drive straight forward' instruction
(cherry picked from commit 61da6388e9a99715788c948abfa70546354c2665)
Use audio announcements as automatic fallback.
(cherry picked from commit a2c833e9c78d938019bee58908b1a3c390ef167e)
PositionMarker: merge update() into render()

update() was only called from render(). It's purpose was to rotate the position marker, which is an operation heavily tied to software rendering. It makes therefore sense to merge update() into render(), which implements the software rendering.
PositionMarker::render(): reduce scope of some variables, const'ify, use qreal rather than double for rotation angle