fix: read_raw() now consumes excess digits to prevent accidental leakage
- switched from std::io::Read traits in read_raw & run ->
std::io::BufRead. this allows read_raw to consume any extra digits
from one input and prevent them from automatically being digested in a
subsequent input. thankfully i can just swap in the BufRead trait
without much fuss
- wrapped call to stdin in main in a new BufReader
- fixed test, i forgot about the wrapping behavior...