Make userForm smarter & improve HTTP semantics.

- Respond with "309 Conflict" on duplicate usernames.
- userForm now knows that it's for models.User.
- Use a real Constraint for username uniqueness validation.
Content negotiation for User.create error responses.

Support text/html, application/json, and text/plain.

Still lacking content negotiation for successful requests.