I think usage output should always go to stdout, but I can see the case for sending it to stderr on usage failure cases (i.e., -h goes to stdout, bad args goes to stderr).