Qt Charts 2.0

Qt Charts 2.0 is supported from Qt 5.4 onwards. Charts 2.0 no longer supports
QtQuick 1.

For more details on the features and fixes, refer to the online documentation
included in this distribution. The documentation is also available online:

  http://doc.qt.io/QtCharts

General Improvements
--------------------
Qt Charts structure changed so that it now follows the structure of Qt modules

API changes (source break)
--------------------------
- Removed the old hovered signal from bar chart
- Deprecated axis labelsPen removed
- Deprecated axis titlePen removed
- Deprecated value axis niceNumbersEnabled removed
- Deprecated QChart::minimumMargins removed
- QAbstractAxis::AxisType values changed
- QChartView::HorizontalRubberBand spelling corrected

New features
------------
- Added QML designer plugin
- Added QChart::localizeNumbers to enable QLocale usage with locale property
- Added cmake support
- Added pressed, released and doubleClicked signals for all series

Fixed issues
------------
- Added missing BoxPlotModelMappers as types for QtQuick 2
- Fixed long label visibility
- Fixed empty domain detection
- Fixed charts axis label format
- Added plotAreaChanged signal
- Fixed axis attachments in QML
- Fixed bar category axis labels
- Fixed shades for log and category axes
- Fixed designer plugin target
- Fixed Charts build when quick module is not build
- Fixed chart zooming
- Fixed android build errors
- Fixed memory leaks
- Fixed build issue with dynamic OpenGL configurations
- Fixed documentation issues
- Fixed QLogValueAxis update on resize
- Fixed category axis shades and labels for categories that span over the grid
