set min username length to 4

fixes #517. Includes tests to ensure that it works as intended. I had to fix up some of the `auth_perms` tests as well, because they were using usernames that were 3 characters in length.

The reason why I did not go with extending Django's User model is that there are a lot of components that are still experimenting with integrating Django v1.5's [User model extension](https://docs.djangoproject.com/en/dev/topics/auth/customizing/#substituting-a-custom-user-model), including `South` and `django-allauth` (note the warning in the link). `django-guardian` only just [released a new version](https://github.com/lukaszb/django-guardian/commit/a6d3948da8d1f93f121a0f495a38473d99bcfd53) that supports that new workflow. Some more thought will have to go into that, but for now this solves our issue.

```
><> deis register http://deis-controller.local:8000
username: uno
password:
password (confirm):
email: uno@uno.com
Registration failed {"detail": "username must be > 4 characters in length"}
```

Also, I took the liberty of refactoring the API Exceptions to extend an abstract Deis Exception class, so there should be less duplicate code in there now.