use try/finally in gzopen(func,...)

besides being more compact code, it also preserves
an original backtrace when throwing an exception
Merge pull request #21 from alyst/gzopen_tryfinally

Use try/finally in gzopen(func,...)