Change TaskScheduler.schedule() method

Change concerns the list of parameters. It is to make
communication with QML easier.
Implement calling TaskScheduler.schedule from QML
Tidy up TaskScheduler

Mainly remove obsolete methods.
Clear jobs before every scheduling
Add C++11 support in Tests
Implement missing test cases for TaskScheduler
Reimplement Job splitting algorithm

The duration given as a parameter is now the duration
of the Job object on which the method was called;
the Job object returned has the remaining duration
(was the other way before).
Reimplement assignment of jobs

Thanks to the change in how Job splitting works,
the job assignment algorithm can now be written
in a less error-prone and more readable way.
Fix a signedness issue

QML does not support QList<unsigned int>. Declaring
a public method taking such an object as a parameter
lead to receiving an empty QList when called from QML
(even though unit tests ran fine).
The easiest solution was to drop unsigned int in favor
of (signed) int; positive value checks are implemented anyway.
Add a getter method for results of scheduling
Fix a scheduling bug

Time calculation should take place in between jobs'
and machines' initialization.
Fix a bug in job splitting

Split job was not added to the jobs collection, resulting
in data loss.
Reimplement result-sending method

Further improvements are needed.
Send scheduling results as a complicated object

Results are jobs - ids and durations - grouped
by machines. Essentially, an array of arrays of objects
is being sent now.
Invalidate canvas after each scheduling request

Not as performant as redrawing only the changed fragment,
but definitely the easiest to write.