ENH: Add hashing

Ready for review.
The problem is that there are some fields that we don't actually read from FIFF files, that we just dump into a String/BytesIO instance (`info['orig_fid_str']`) so that they can be dumped back out when we save the files back to disk. For some strange reason, they aren't 100% identical between sequential reads of the same file (!), and this is a workaround for that.

I'll add an `ignore_sbio` parameter that defaults to `False` that can be used to ignore these instances, which is what I think we'll have to do for `Raw`/`Epochs`/`Evoked`. The cases where everything is identical in `Raw`, `Evoked`, or `Epochs` but the `StringIO` or `BytesIO` is (meaningfully) different should be exceedingly rare.