Introduce viewRange with explicit offset/size for Array[Byte]

We have a desire to pass around ranges for Arrays, but there doesn't appear to be a way to do this via the public api.

I actually think there might be a better, more generic way of doing this (so we get this for all the other `view` variants for free). For example returning the `view` type directly on those methods, and having a `toChunk` method when the view manipulation has been done. Or something like that.

Alternatively we could add named arguments with defaults, but that is generally a Bad Idea in Scala, at least in my experience.

I'm more than happy to make some of these changes if I know what might be considered OK/safe, as I'm assuming there might be a good reason it hasn't been done yet. Thanks in advance for suggestions.
If your wondering why I haven't just called it `view` I tend to avoid overloading in Scala as it leads to problems.