Redesign file browser searching
Redesigns the file browser searching functionality. In particular, the design was now made to be more extensible to allow other tasks we may want to run asynchronously in the future by introducing a ThreadPool class. All the file search related logic is now encapsulated as its own function object named FileSearch that can be used together with a ThreadPool.
I did some quick UI testing in a Linux VM. This is quite fabolous.
https://github.com/LMMS/lmms/assets/6345473/1d0665d5-546d-4a8e-90c3-af9005a1b71d
I looked over the bits I wanted to check (specifically the thread pool) and I think it's fine for now. The only thing I would add is to make sure that text files have a trailing line feed. GitHub marks those that don't in the diff with a no-entry symbol at the end of the file.