Move common code to Scheduler

Move some common code from FifoScheduler/OptimizedScheduler to the
Scheduler superclass.
Count last busy ticks

Check when the last job finished in each scheduler.
Disable verbose output

Only output the significant statistics.

TODO: Make the verbose output configurable.
Another test suited for FifoScheduler optimally
Test to optimize the resource distribution

The optimizing Scheduler should try to maximize the resource
distribution.
Current test results

Save the current test results for reference.
Use size map to store jobs

Improve performance by sorting the jobs according the size.
Fix the idle check

Only consider the scheduler idle, if no job is running and no job is
queued.
Use std::map::upper_bound to find the job size fit

The std::map::upper_bound() can be used to find the largest job which
will fit the available resources.