.get() Raises IndexError which Results in Noisy Stack Trace
I'm going to pass for now.
Performing `.get()` for a row that does not exist will result in a verbose stack trace that starts with an IndexError.

I think it would look a bit cleaner if the IndexError did not print in the stack trace. If you agree, I would be happy to make the PR. Let me know.

```
Tweet.get(Tweet.id==0)
```

Results in:

```
Traceback (most recent call last):
  File "C:\test\lib\site-packages\peewee.py", line 6933, in get
    return clone.execute(database)[0]
  File "C:\test\lib\site-packages\peewee.py", line 4306, in __getitem__
    return self.row_cache[item]
IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\test\lib\site-packages\peewee.py", line 6485, in get
    return sq.get()
  File "C:\test\lib\site-packages\peewee.py", line 6936, in get
    raise self.model.DoesNotExist('%s instance matching query does '
__main__.TweetDoesNotExist: <Model: Tweet> instance matching query does not exist:
SQL: SELECT "t1"."id", "t1"."content", "t1"."timestamp", "t1"."user_id" FROM "tweet" AS "t1" WHERE ("t1"."id" = ?) LIMIT ? OFFSET ?
Params: [0, 1, 0]
```
-----


We could remove the IndexError from this stack trace by changing the following:

```
    def get(self, database=None):
        clone = self.paginate(1, 1)
        clone._cursor_wrapper = None
        try:
            return clone.execute(database)[0]
        except IndexError:
            sql, params = clone.sql()
            raise self.model.DoesNotExist('%s instance matching query does '
                                          'not exist:\nSQL: %s\nParams: %s' %
                                          (clone.model, sql, params))
```

to:

```
    def get(self, database=None):
        clone = self.paginate(1, 1)
        clone._cursor_wrapper = None
        result = clone.execute(database)
        if not result:
            sql, params = clone.sql()
            raise self.model.DoesNotExist('%s instance matching query does '
                                          'not exist:\nSQL: %s\nParams: %s' %
                                          (clone.model, sql, params))
        return result[0]

```

This change results in the following clean stack trace:

```
>>> Tweet.get(Tweet.id==0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\test\lib\site-packages\peewee.py", line 6485, in get
    return sq.get()
  File "C:\test\lib\site-packages\peewee.py", line 6935, in get
    raise self.model.DoesNotExist('%s instance matching query does '
__main__.TweetDoesNotExist: <Model: Tweet> instance matching query does not exist:
SQL: SELECT "t1"."id", "t1"."content", "t1"."timestamp", "t1"."user_id" FROM "tweet" AS "t1" WHERE ("t1"."id" = ?) LIMIT ? OFFSET ?
Params: [0, 1, 0]
```
