refactor(logger): add a logger to handle all printing and writing to stdout

@hankduan could you take a look? Doing this as the basis for having different logging options (e.g. warn, output only if in troubleshooting mode).
I was also thinking of calling the method `init`, but that didn't make much sense since you can call it more than once. Other name ideas?