# Functions
NewExactReadCloser returns a ReadCloser that returns errors if the underlying reader does not read back exactly the requested number of bytes.
NewLimitedBufferReader returns a reader that reads from the given reader but limits the amount of data returned to at most n bytes.
NewPageWriter creates a new PageWriter.
WriteAndSyncFile behaves just like ioutil.WriteFile in the standard library, but calls Sync before closing the file.
# Structs
PageWriter implements the io.Writer interface so that writes will either be in page chunks or from flushing.
ReaderAndCloser implements io.ReadCloser interface by combining reader and closer together.