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.
FxMixer, Mixer, FxMixerView: backported FX send support from master branch

There once have been huge efforts to implement FX send support in the
master branch. In order to make it available on a stable base here's
a backport which is non-trivial as there have been major rewrites of
the mixer's worker thread architecture.

There still seem to be bugs which we have to fix before merging into
stable branch.

Thanks to Andrew Kelley for the original work.
Merge branch 'stable-0.4' into stable-0.4-new-fx-mixer
FxMixer: rewrote loop for adjusting FX channel models in deleteChannel()
Song: added missing refresh of FxMixerView when loading project

Missed this call when backporting.
FxMixerView: fixed clear()

Before calling refreshDisplay() we have to actually clear the backend model.
Ported the FX mixer UI changes from stable-0.4
Merge pull request #25 from diizy/stable-0.4-new-fx-mixer

Ported the FX mixer UI changes from stable-0.4
Merge branch 'stable-0.4' into stable-0.4-new-fx-mixer

Conflicts:
	src/gui/FxMixerView.cpp
Merge branch 'stable-0.4' into stable-0.4-new-fx-mixer
Merge branch 'stable-0.4' into stable-0.4-new-fx-mixer
FxMixer: ignore mute state in addChannelLeaf() to fix lockup

Even if we do not process the FX chain later, we at least have to enqueue
all related FX channels to the job queue in order to prevent a lockup.
Merge branch 'stable-0.4' into stable-0.4-new-fx-mixer

Conflicts:
	src/core/FxMixer.cpp
	src/gui/FxMixerView.cpp
InstrumentTrack: set range of FX channel model to infinite when loading settings

When loading a project, instrument tracks usually are instantiated/loaded
before the FX mixer settings are loaded which results in an empty FX mixer
and thus 0 FX channels. The actual FX channel value for the instrument track
would be lost that way. Therefore set a big value which is being corrected
later by the FxMixerView for all instruments.
Added separate ZynAddSubFX repository as submodule
Initial integration of updated ZynAddSubFX