Support snapshot windows

Well no reason you didn't look at it Mark - I never created the PR. Apologies.

> Could you use bw.copyBytes instead of writing to a DataOutputStream?

Definitely/unfortunately not. Using `DataOutputStream` writes out the bytes size as a prefix, which changes the behaviour of `Group` when we override the `Array[Byte]` method.