Inserting a list of IntEnum members into ArrayField(IntegerField) fails
peewee is handing the `IntEnum` members directly to psycopg2, so my sense is that the issue lies there. An alternative would be to subclass ArrayField and override the `db_value()` method, coercing each list item into an `int()`.
Trying to use IntEnum members as values in `playhouse.postgres_ext.ArrayField(IntegerField)` will fail, since peewee wants to insert names of those values (for instance `"SomeEnum.example"`) instead of the actual values (eg. `1`).

On PostgreSQL 9.6.4, peewee 2.10.1 and Python 3.6.2, this code:

```python
from enum import IntEnum

import peewee as pw
from playhouse.postgres_ext import *

# Behaves the same way in PostgresqlDatabase too.
db = PostgresqlExtDatabase("exploding-db",
	user="user", password="nope", host="localhost")

class Role(IntEnum):
	can_sign_in = 0
	view_posts = 1
	edit_posts = 2
	delete_posts = 3
	admin = 1000

class User(pw.Model):
	class Meta:
		database = db

	login = pw.TextField(unique=True)
	password = pw.TextField()  # PasswordField IRL, but let's keep it simple
	roles = ArrayField(pw.IntegerField)

db.drop_tables([User], safe=True)
db.create_tables([User])
user = User(login="admin", password="test", roles=[Role.admin])
user.save()  # Boom!
```

...fails with:

```
Traceback (most recent call last):
  File "/somewhere/in/the/universe/peewee-boom.py", line 30, in <module>
    user.save()  # Boom!
  File "/usr/lib/python3.6/site-packages/peewee.py", line 5108, in save
    pk_from_cursor = self.insert(**field_dict).execute()
  File "/usr/lib/python3.6/site-packages/peewee.py", line 3526, in execute
    cursor = self._execute()
  File "/usr/lib/python3.6/site-packages/peewee.py", line 2912, in _execute
    return self.database.execute_sql(sql, params, self.require_commit)
  File "/usr/lib/python3.6/site-packages/playhouse/postgres_ext.py", line 390, in execute_sql
    self.commit()
  File "/usr/lib/python3.6/site-packages/peewee.py", line 3598, in __exit__
    reraise(new_type, new_type(*exc_args), traceback)
  File "/usr/lib/python3.6/site-packages/peewee.py", line 135, in reraise
    raise value.with_traceback(tb)
  File "/usr/lib/python3.6/site-packages/playhouse/postgres_ext.py", line 383, in execute_sql
    cursor.execute(sql, params or ())
peewee.ProgrammingError: missing FROM-clause entry for table "role"
LINE 1: ...assword", "roles") VALUES ('admin', 'test', ARRAY[Role.admin...
                                                             ^
```

Since [IntEnum](https://docs.python.org/3/library/enum.html#intenum) members are subclasses of ints, it should be possible to assign those members directly. Many other Python mechanisms treat them much like integers (so, say, `Role.admin == 1000` works as you'd expect), yet it doesn't in there.

The workaround is to use `MyNeatEnum.member.value` instead of `MyNeatEnum.member`, but that gets a little bit repetitive. It'd be nice if this was handled automatically.