Build slug before check if no primary key

Fix #48.

The slug could be built earlier if the `uses_primary_key` is set to `false`.

Pros:
- Database query is saved. We don't need the primary key to generate the slug.
- We could perform validation on the generated slug and generally have it at
  the earliest possible time.