Adding support for self in addition to parent and id

This adds support for "self" as a tag in addition to parent and id support.  self is a `*datastore.Key` that points to the struct itself.  This will help in moving from a pure datastore application to goon in that the developer is used to passing around `*datastore.Key`

This can be used beside parent/id on the same struct but I'm not sure why you would want to do that.  `self.Parent()` = parent and `self.StringID or self.IntID = id`