Modified BReader to support reading from a file as well as just a raw bytes
Huge refactoring to support multiple package types