Feature/bijected source sink

Use case is that you have a Source on disk that you want to treat as a different type and have a bijection between those types. Allows reading/writing through the bijection