Allow an optional IO object to be used inplace of $stdout

This is useful for a number of reasons.

1. Testing. Being able to pass in a `StringIO` object and then make assertions on that vs trying to capture output sent to `$stdout` is a lot easier.

2.  I'm working through a codebase where $stdout was overwritten with some other custom logging object. This was painful because when the  `LogstashLogger::Device::Stdout` was created. The `$stdout` global var was already replaced, my solution is to instead pass down the constant `STDOUT` which holds a true reference to `stdout` (until I can eliminate the `$stdout` overriding) 

e.g.
```
LogStashLogger::Device.new(type: :stdout, io: STDOUT)
```

I also plan on submitting a PR with the URI changes we discussed here
https://github.com/dwbutler/logstash-logger/pull/19
just haven't gotten around to it yet. :-)

-- Arron