refactored Batt::Reader to make it more testable

broke parser out into function from reader
added some tests
added tests around other types of output