prevent arithmetic overflow on score_strings

This commit prevents possible arithmetic overflow on score_strings
function. In the end of this function, it "caps" the score to prevent
exaggregates. However, due to "capping" expression overflows,
actual score turns zero when it shoudn't be.
remove unnecessary predicate in has_common_substring

The original (removed) predicate may generate issues on non-ASCII
environment and even on ASCII-environment, this is completely
unnecessary.
make sure no arithmetic overflow on block sizes
support big files
optimize loop to branch on fuzzy_digest

In this context (where this commit changes), new value of bi is
MIN(bi, self->bhend - 1). This is clearly waste of time to use loop.
optimize out branch from score_strings