Explicitly Define Vertica Error Classes

Right now, it's hard to do error handling for specific errors, such as SyntaxError and InsufficientResources. This change adds the ability to easily catch those error classes. 

Example: 
```python
try:
    query_syntax_error = 'select count(*) frm my_table'
    data = get_data(query_syntax_error)
except VerticaSyntaxError:
    print('VerticaSyntaxError caught.')
```