Added salt to the keys to keep them fresh
Added tests for the new salt feature, and also for different nonce sizes.

I changed the return value of BytesAvailable() to an int64 because it's an
interface and shouldn't limit the underlying implementation. If they have an
incomprehensibly large input device then now they can represent its length.