pathio package for handling different data paths

pahtio supports writing to and reading from different types of paths
transparently. It supports three types currently:
1. Empty (stdin/stdout)
2. Local file paths
3. S3 File Paths

It has both a read and a write interface. Unfortunately, since s3 needs
to know the length of a file before starting to uploading it it's a bit
awkward to expose a writer interface directly because that would involve
buffering data in memory. Instead we provide a writer interface that
takes in a reader which seems both reasonable and can be transformed by
the caller using io.Pipe()