allow the user to specify the table alias name
In rewriting the SQL generation, I've got this feature covered. The implementation of this in peewee 2.8 just feels a bit too hacky to me to want to merge.

currently this:

``` python
UA = User.alias()
UA.select().where(UA.username=='derek')
```

generates this:

``` sql
SELECT "t1"."id", "t1"."username" FROM "users" AS t1
WHERE ("t1"."username" = ?)
```

we should allow the user to optionally specify the table alias.  example:

``` python
UA = User.alias('u1')
UA.select().where(UA.username=='derek')
```

which would generate:

``` sql
SELECT "u1"."id", "u1"."username" FROM "users" AS u1 
WHERE ("u1"."username" = ?)
```

optionally, a little syntax sugar that i prefer:

``` python
UA = User.as_('u1')
UA.select().where(UA.username=='derek')
```

also identical aliases in the same query are handled appropriately, so aliases can be used in one-liners:

``` python
User.as_('u1').select().where(User.as_('u1').username=='derek')
```
