Change isspace(*char_ptr) to isspace(*char_ptr & 0xff) so that the correct
piece of memory is looked at for the bit mask.
gcc optimises out the '& 0xff' (on i386 at least).
Fixes problems found by gcc when the splurious (int) cast is removed
from the #defines in ctype.h
from OpenBSD to make use of different hash functions possible.
Also factored out some common code pieces, ANSIfied and
corrected SHA1 hash to make the result match up with the
regression examples in above RFC.