gps_importer plugin: Allow to load any number of GPX files at same time

Signed-off-by: Yauhen Kharuzhy <jekhor@gmail.com>
Fix gps plugin multi-open feature

Signed-off-by: Yauhen Kharuzhy <jekhor@gmail.com>
Properly reserve place for arrays in line and polygon clipping routines

A QVector::clear() method completely reinitializes the object. Calling
a QVector::reserve() before clear() is useless and causes big overhead at
array append operations.

Give ~6% perfomance gain.

Signed-off-by: Yauhen Kharuzhy <jekhor@gmail.com>
Don't apply clipping for polygon with all points inside clipping box

Clipping algorithm is expensive and can take a lot of time with layer
contained big amount of polygons (upto ~15% in my tests). Most of the
polygons ususally are inside clipping rectangle and simple check for all
points of polygon can significally reduce render time.

This will increase overhead when a lot of polygons cross borders of
clipping rectangle but such cases are rare.

Signed-off-by: Yauhen Kharuzhy <jekhor@gmail.com>
Optimize simple marker rendering perfomance

expression( "..." ) call create QString object at every invocation. For
layers with simple markers this overhead take upto 10% of rendering time.

Move expression finding to startRender() method.

Signed-off-by: Yauhen Kharuzhy <jekhor@gmail.com>
Eliminate creating of unused QString objects in transformCoords

Every call of transformCoords() Qstring dir object is created. It uses
only for output information about errors, so move its creation to error
handling block.

Perfomance gain is ~7%.

Signed-off-by: Yauhen Kharuzhy <jekhor@gmail.com>