As the old debt indicates, let's move some of these out of detail
Also, let's:
- Specify extent as template parameter
- Forward initializers so that we can in-place init a span (right now we have to pass in an existing span)
- It appears seekpos and seekoff aren't fully available, remedy that