Initial commit

Porting all the code from Qiita and extending the tests.
When is a `ProgrammingError` raised? Minimally, the comment seems incorrect; if there is nothing to fetch, then `fetchall` will return an empty list:
```python
>>> with conn.get_postgres_cursor() as cur:
...     cur.execute("select * from qiita.analysis_chain")
...     print cur.fetchall()
... 
[]
```
So it doesn't seem quite right to just `pass` if there is a `ProgrammingError`.  Do we have any more information about this?