Revised journalling (undo/redo) to record full states instead of changes

Recording single changes of objects or their specific properties is
completely superfluous as we have full implemented state tracking in all
objects already. Therefore use SerializingObject::saveState() and
SerializingObject::restoreState() in order to implement the undo/redo
functionality.

This is just an initial commit and needs some further work (especially
regarding stability). However even things like undo/redo of
addition/removal of Tracks and TrackContentObjects do work already.
PianoRoll: initial undo/redo support

Most editing operations in PianoRoll are now tracked by the revised
journalling and thus are included in global undo/redo.
Widgets/Knob: only restore journalling state on release of left mouse button

Do not try to restore the journalling state of the underlying model when
releasing e.g the right mouse button as this causes a crash otherwise.
JournallingObject, ProjectJournal: global checkpoint management

There's no need for having each JournallingObject maintain it's own
checkpoints and build a complex (and buggy) logic in ProjectJournal
in order to manage all the JournallingObject with their checkpoints.

Instead do it the simple way: in ProjectJournal maintain a stack for
undo checkpoints and a stack for redo checkpoints. On each undo or redo
operation simply push and pop to/from the according stacks and save
and load states of the concerned JournallingObject.

This basically strips most functionality from JournallingObject. All
what's left is the management of its ID which unluckily is still
required in order to properly implement undo/redo of additions and
removals of JournallingObject.
JournallingObject: header cleanups

No need to include various QtCore header files anymore. Fix resulting
missing headers in some other files.
Merge pull request #507 from diizy/stable-0.4

Compat code to make LMMS compile on Qt <4.8
AutomatableModel: always fit value from linked model

When using value from linked model, make sure to fit it into own range
as otherwise this can cause out-of-boundary accesses e.g. in ComboBoxModel.

Closes #505.
ComboBoxModel: coding style fixes
Merge remote-tracking branch 'origin/stable-0.4-undo-redo'

Conflicts:
	include/AutomatableModel.h
	include/MidiPort.h
	include/TrackContainerView.h
	include/surround_area.h
	include/track.h
	src/core/AutomatableModel.cpp
	src/core/TrackContainer.cpp
	src/core/note.cpp
	src/core/track.cpp
	src/gui/PianoRoll.cpp
	src/gui/TrackContainerView.cpp
	src/gui/widgets/LcdSpinBox.cpp