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).
This mirrors what `util` does - it's not my favorite syntax, but I think it probably makes more sense as puts/print for node users.