Rewrite thread logic, add tests and add color extraction for CanvasEngine

Thread logic has been rewritten to use two executors (main and
background) instead of handlers or asyncTasks.

Color extraction has been implemented similarly to the GL engine, but has been refactored into a new class.
New tests have been added for both the color extraction and the
CanvasEngine.

Other details have been changed to make the CanvasEngine behaviour as close as possible to the previous GL Engine.

Trace and dump logic have been added.

Many details have changed and this CL requires careful review.

Test: manual
Test: atest ImageWallpaperTest
Test: atest WallpaperColorExtractorTest
Bug: 243402530

Change-Id: Ic1db1151bc83e0ac2a13301adfa778e78333af05
6 files changed