Fix Glacier fileobj hash calculation.

Fixes #2488 by only decoding from `bytes` when necessary. This remains
backward compatible with the existing Python 2 behavior while fixing
the regression. Going forward, Python 3 **requires** that binary files be
opened in **binary** mode.
Several fixes for Python 3 behavior.

Attempts to throw a useful error if a file is passed in but not opened
in binary mode on Python 3. If a file-like object without a `mode` param
is passed in instead, then we make every attempt to decode to bytes,
falling back to UTF-8 if no encoding is specified.
Switch to os.urandom to generate data
Add comment about encoding [ci skip]
Merge pull request #2489 from danielgtaylor/glacier-hash-fix

Fix Glacier file object hash calculation. Fixes #2489, #2488.