Implement random access to data (issue #56)

This adds getData/setData overloads that take an offset parameter to control where data is read from or written to.