Overload the print function to fix #39 and #51. It is a better implementation alternate of #55.
Skip the replacement if a stream is set, because the Windows Console bug only appears when printing to screen.
Remove the incorrect fix for encoding issue at youtube_stdout.
Detect the encoding of stdout, and filter output according to this encoding.
Skip the filtering for all non-stdout stream.
Generalize the overload of print. It now supports different streams, and filter out the unprintable characters at the last stage.
`sys.stdout.encoding` might be None according to docs. In this case, it will use the default encoding.
Merge pull request #99 from shk3/console_encoding2

Overload print function to filter out unprintable characters especially for the encoding bug of Windows console