Advanced digitizing tools (aka CAD tools)

This integrates CAD tools in QGIS application.

This is roughly the port of CADinput plugin to core, with some fixes and improvements.

A QEP has been issued: https://github.com/qgis/QGIS-Enhancement-Proposals/pull/8
@3nids might be worthwhile changing this part to use the new QgsExpression::evaluateToDouble method. You can see how it's used in QgsDoubleSpinBox::valueFromText. It's got full test coverage so should be safer to use than this duplicate code.