(PUP-1044) Make FileBucket::File use a file when possible

This replaces the usage of binread of the entire file contents whenever possible (for computation of checksums, or for returning the size of the data).
You should be able to do `'rb'`, there's some similar code in the checksum_spec, especially, the case where you need to filebucket a file that contains `\r\n` in it, and make sure we calculate the correct checksum.