fix ControllerBase.__repr__
Refactor setpoint ramping

Simpler delegates
-----------------
- delegates.CheckStateMapper ->
  controllers._StartProgramMapper(QAbstractDelegate)
- delegates.ProfileDelegate ->
  controllers._ProgramTableDelegate(QAbstractDelegate)

both classes also contain simpler code.

Refactor SetpointModelItem
--------------------------
new methods
- startRamp
- stopRamp
- isRamping

Refactor Controller
-------------------
new methods
- startAllPrograms
- stopAllPrograms

no need to derive setData
merge ControllerBase -> Controller{Ui,}
make CurveData private
Model/ModelItem API cleanup

remove index-based methods:
- remove model.updateSetpoint()
- remove model.requestData
- remove model.instrument
- remove model.setInstrument

refactoring:
- re-arrange methods in InstrumentModelItem
- remove setInstrumentForRow method
- add sendData method to InstrumentModelItem
- add connectHardware method to InstrumentModelItem
- do more work in loadConfig and less in setInstrument

simpler SetpointModelItem
signal configLoaded

send model.configLoaded signal to view so that
it updates itself accordingly.

rename model.loadSerialConfig -> loadConfig
Preview program in a plot.

New classes
-----------
_ModelData(QwtData)
fix: extra _pidMapper line in updateInstrumentTable
remove log table from dashboard
Switch dashboard to Graphics View Framework

deleted classes
---------------
- widgets.SvgWidget

refactor
--------
- new Dashboard.__initScene() method
- new Dashboard.resizeEvent() method handling child widgets
- draw SVG background in QGraphicsSvgItem
- global 'scale' option not handled anymore
- rotation and scaling handled on per-widget basis using 'angle' and
  'scale' options in config.
increase version number
set PyQt4 apiv2 in conf.py
update sphinx documentation
doc classes