Separates the byte-by-byte and short-by-short longest_match
implementations into two separately tweakable versions and
splits all of the longest match functions into a separate file.
Split the end-chain and early-chain scans and provide likely/unlikely
hints to improve branh prediction.
Add an early termination condition for levels 5 and under to stop
iterating the hash chain when the match length for the current
entry is less than the current best match.
Also adjust variable types and scopes to provide better optimization
hints to the compiler.