Add multithread for search and bmh algorithm

- search is now multithreaded:
  - historic lookup_thread mmaps file
  - 2 workers receive jobs (half a file)
  - 1 data thread saves the results of workers
Gain: ~5% performance on disk and cache

- add Boyer-Moore-Horspool algorithm
  - slightly better than Rabin-Karp
  - fallback on Rabin-Karp if Unicode pattern
Gain: ~2% performance

- lots of ameliorations throughout on datastructures and operations