Add support for basic type pointer fields

Allows models like:

```
type User struct {
    Id    int64
    Name  string
    Email *string `orm:"null"`
}
```

This helps a lot when doing JSON marshalling/unmarshalling.

Pointer fields should always be declared with the NULL orm tag for sanity,
this probably requires documentation.

I've only included support for the basic types here.

Rebased against `develop`, per #655