Job classes:
* Moved common members to parent.
* Made Job constructor protected, only for use by implementing class.
JobPrivate classes:
* Moved common members to parent.
* Made Job constructor protected, only for use by implementing class.
* Unified members where code was duplicated.
On OS X, multiple dialogs pop up asking for permission when starting multiple jobs in parallel.
Thus, as there are issues both with kwallet and OS X keychain, just serialize job execution on all platforms.
On Windows this doesn't make much of a difference as the job impl's are synchronous anyway.
kwalletd gets lost in nested eventloops when we send multiple openWallet() dbus calls in parallel.
Thus synchronize job execution using an internal JobExecutor singleton.