Fixed leftover in flight queries caused by sqlalchemy.get_columns()

We need to call fetchall even when we have 0 rows
Merge pull request #24 from mariusvniekerk/sqlalchemy

Fixed leftover in flight queries caused by sqlalchemy.get_columns()
Keep query handle open after all results have been fetched

The problem with immediatly closing the handle is it makes fetching the
log impossible because the handle is no longer valid. The log messages
are generated as results are fetched, so there were 2 options: (1) cache
the log before closing the handle (2) keep the handle open. Option 2 is
much simplier so I went with that. The only downside is Impala resources
will likely be released later than before this change. Each cursor will
have one open handle, which will be closed when the cursor or connection
is closed.
Fix conversion of Timestamps and Decimals