Fixed|libcore|Animation: Updating current time

Before these changes, the current time being just a reference, it
may have gotten changed from another thread during the evaluation
of an animation's value. This would sometimes end badly.

Now the animation time is stored in a copy, so it will only get updated
when requested.
Fixed|Console|libdoomsday: Timing the execution buffer

If there were lots of scheduled commands, an inordinate amount of
time was spent looping in the execution buffer. Now the time is checked
once and commands are executed accordingly.
libcore|TaskPool: Redesigned shutdown procedure

Previously TaskPool's destructor waited until all the tasks were
finished. Now, the public TaskPool is deleted immediately and the
private instance will wait for the tasks to report themselves finished.
Only after this the private instance deletes itself.

Note: When encountering a crash involving mutex unlocking, check that
a Guarded object isn't deleted during the guarding.

Also cleaned up the friend relationship between Task/TaskPool.
libcore|Lockable: Check that mutexes are unlocked before destruction

The caller's responsibility is to ensure that locked mutexes are not
deleted.
libgui|Atlas: Minor performance tuning

Avoid repeating defragmentation operations. Don't print tons of log
messages about the atlas being full.
libappfw: Redesigned TextDrawable with better multitasking

This new implementation of TextDrawable can cleanly have multiple
ongoing wrapping tasks, can be deleted immediately without waiting,
and does no questionable copying of front/back wrapping data.
Performance|libappfw|LogWidget: Improved/faster log entry processing

One of the major performance bottlenecks was that entries were being
processed even when the log was not really visible.

Applied other rules for avoiding excessive work, for instance pausing
the incoming messages for a while to allow the scrolling to catch up.

Todo for later: There is still room for improvement; at no point
should the log remain blank for significant periods of time... Also
should rethink strategic points when the clear the entire atlas and/or
trigger a (cheap) defragmentation. The pausing should also be
unnecessary if one could "look ahead" and see that the entire set of
visible entries will not be needed any more, just clear everything
before starting an update. Currently the individual allocations are
released one by one.