Created a varying reduction function

Reduce now takes k, which is used to create variations of the reduction
function. It is used to create a 32 long bit mask, which contains at
least passwordLength 1’s in it, then uses that to choose which bytes
are used from the hash in the reduced version. Generates unique
variations for all numbers except 2^n-1 when n > passwordLength+1