base-item: Port the create_thumbnail operation to GTask
base-item: Improve serialization of thumbnail creation jobs

Using a class level lock to serialize the operations is a bad idea.
A thread pool with one thread is much more efficient because it avoids
creating a bunch of threads which line up on the lock to create
thumbnail.

This vastly improves the responsiveness of the application.