Qt Data Visualization 1.1

New features
------------

- Support for rendering the graph into an image.
- QValue3DAxisFormatter class for creating custom value axis formatters.
  With a custom formatter, you can control axis grid line and label positions,
  as well as fully customize the label strings.
- Logarithmic value axes are now supported via a QLogValue3DAxisFormatter.
- Support for adding custom items and labels inside the graph with
  QCustom3DItem and QCustom3DLabel classes.
- Q3DScene::selectionQueryPosition now can select axis labels and custom items
  as well as data items. Selection is detected via QAbstract3DGraph::selectedElement
  property.
- The current frames per second (FPS) measurement can be enabled and queried via
  QAbstract3DGraph::measureFps and QAbstract3DGraph::currentFps properties.
- QValue3DAxis::reversed property allows drawing the axis in reverse direction.
- A single item model role can be mapped to multiple properties of the data items
  when using item model proxies. Regular expression search and replace can be used
  to make the data unique for each property. Useful for parsing e.g. timestamp field
  to get values for both rows and columns of a bar chart.
- Support for aggregating multiple mapping matches in bar and surface item model
  proxies into single bar or surface point.
- Support for orthographic projection in graphs via QAbstract3DGraph::orthoProjection.
- Axis labels can now be set to automatically orient towards the camera with
  QAbstract3DAxis::labelAutoRotation property to increase label readability
  at all angles.
- Bars3D: Clicking row/column labels can now be used to highlight rows/columns if
  the selection mode allows it.
- Surface3D: X values in items of a row and Z values of items of a column can now be
  either ascending or descending for the surface to be valid.
- Aspect ratio, i.e. the ratio between horizontal and vertical axes can be changed
  for scatter and surface graphs.
- Axis titles can now be optionally displayed beside the axes in the primary graph view.
- Added support for optional optimizations via QAbstract3DGraph::optimizationHints.
  Note: This feature is currently in beta. The only optimization hint currently supported
  is OptimizationStatic for scatter graphs, which vastly improves the render speed for
  large static data sets, allowing millions of points to be displayed on desktop platforms.

Fixed issues
------------

General:
- Optimized series caching in renderer.
- Optimized object mesh caching in renderer.
- Optimized visible are calculation for surface graphs.
- Fixed crash when setting null color/gradient to theme in QML.
- Fixed overriding theme color with explicit series color in QML.
- Optimized changing only single item/row in data proxies.
- Fixed a crash when using both Qt Charts and Qt Data Visualization in the same application.
  Note: This causes a binary break for the item model proxies.
- Bars3D: Fixed incorrect label positioning in slice mode when grid off.
- Bars3D: User defined meshes that have flat base no longer glimmer through graph floor
  when viewed from below.
- Scatter3D: Range gradient now works for MeshPoints.
- Surface3D: Fixed a crash when shadows were supported by OpenGL but flat shading was not.
- Surface3D: Selection texture no longer gets corrupted in case there are multiple surfaces
  visible and the axis ranges are adjusted.

New examples
------------

- customitems: Example about showing custom items and labels in the graph.
- draggableaxes: Shows how to implement an input handler to enable scrolling
  the graph via dragging the axes.
- qmlaxisdrag: Shows how to implement an input handler to enable scrolling
  the graph via dragging the axes in QML.
- qmlaxisformatter: Shows how to use customize axes using axis formatters.

Platform specific changes
-------------------------

- Fixed issue with graph not always updating before rotating the graph in iOS.
- Fixed shader linking error on some Android versions.
- Fixed memory leaks in OS X and Android builds.
