Simpler test for appropriate floats for binary hashing. Refs #8822.

No idea if this will actually fix it.
Fix Visual C++ warning in hash. Refs #8568. 

I changed this a little from the patch on #8568. I moved the pragmas to the
start and end of the file because I don't like to little the body of the code
with them (this does mean I've disabled a potentially useful warning, but the
code is pretty stable nowadays).

I also removed the version checks, as the warning should be present in later
versions.