Revised compress method

I made 2 changes to the "compress" method:
 1.  it will return fewer than the target number of bytes if it is given a digest that is smaller than the target size already (instead of throwing an error)
 2.  it spreads the modulo bytes around rather than dumping them all into the final byte (I think this might preserve some entropy, no?)