Since `Close()` can technically fail, it's better to call it yourself (and it's idempotent), but this will help avoid a common class of bugs in small-scale use cases.
An alternative here is that we could remove all `Close()` calls from all destructors and possibly add a `DCHECK(!is_open_)` to the base dtor to force the user to close handles. The downside of this is that it makes RAII more difficult, so I'd prefer to leave the close-in-dtor even though it can fail in unusual scenarios.
Author: Wes McKinney <firstname.lastname@example.org>
Closes #269 from wesm/ARROW-455 and squashes the following commits:
821ee22 [Wes McKinney] Add dtor to BufferOutputStream that calls Close()