function hash( value, m ) {
	var p;
	var s;
	var i;

	// Use a polynomial rolling hash algorithm...
	s = 0;
	p = 1;
	for ( i = 0; i < value.length; i++ ) {
		s = ( s + ( ( value.charCodeAt( i )+1 ) * p ) ) % m; // +1 in order to avoid 0
		p = ( p * PRIME ) % m;
	}
	return s;
}
Computes the hash of a string.

@private
@param {string} value - input string
@param {PositiveInteger} m - modulus
@returns {NonNegativeInteger} hash