Support all signed and usigned interger types as primary key type

With this modification is now possible to use any integer type for the primary key value.

If I have a data type, eg:
```go
type Animal {
    Counter     uint64 `gorm:"primary_key:yes"`
}
```
before this modification the instruction:
```go
db.First(animal, uint64(888))
```
would be resolved in the wrong query:
```sql
SELECT * FROM Animals ORDER BY counter DESC LIMIT 1
```
The where clause is totally skipped.

With this modification the generated query is the expected one:
```sql
SELECT * FROM Animals WHERE counter = 888 ORDER BY counter DESC LIMIT 1
```
All below changes is not necessary?