Get the dimensions of an unread IO stream by reading ahead

Before:
```ruby
>> Dimensions(File.open("masterpiece.png", "rb")).dimensions
=> nil
```

After:
```ruby
>> Dimensions(File.open("masterpiece.png", "rb")).dimensions
=> [522, 606]
```