Efuns: Fixed multiple issues with the new hash().
It now follows the same API as the old hash() (ie the second argument
is a modulo). It now also has the same value range as the old hash (eg
it no longer returns negative values), and returns the same value on
both 32-bit and 64-bit platforms.
As a side-effect this fixes a buffer read overrun when the second argument
was larger than the length of the string.
It no longer leaves droppings on the stack.
Updated the testsuite.