Add the ability to change how the Kind is determined on an Entity, on a per Goon instance basis.

This is through a function stored on Goon, the KindNameResolver.

This means if you want to do something globally, e.g. add a prefix to all Datastore Kinds, you can, without having to specify Kind values on each Entity instance.

For example:
```go
func prefixKindName(src interface{}) string {
	return "myServiceName." + DefaultKindName(src)
}

g := FromContext(c)
g.KindNameResolver = prefixKindName

//now all Entities has the prefix of "myServiceName." when storing their data.

_, err := g.Put(thing)
```
If ```setStructKey``` requires ```g *Goon``` then I think it would be better to make it a method of ```Goon```, like this:

    func (g *Goon) setStructKey(src interface{}, key *datastore.Key) error {
        // .. implementation
    }