Use `count=1)[0]` with `np.fromstring` to avoid bogus extra dimensions

Removed half of the rationale for the `s` function, next up
rationalise the treatment of binary data
Refactored the `s` helper function
Switched to a context manager for reading in the file

Also check the magic number directly against the binary and give
a better error message if it fails