Implement Boyd-Moyer-HorsePool Algorithm

Significantly Improves File Searching times (78x) by implementing
Boyd-Moyer-HorsePool Algorithm.

Pattern Search difference on a 200mb file:
Before: 55s
After: 700ms

Adapted from
http://aspdotnetcodebook.blogspot.com/2013/04/boyer-moore-search-algorithm.html