Fixed $stdin = StringIO.new and Kernel#puts not using $stdin.

Fixes #298.

Fixed __validate_stdin_value to use ducktyping to allow assignment of StringIO
Fixed Kernel#gets to use $stdin, not STDIN.

STDIN should only be used to hold onto the original. Nothing more.