Allow 'links.self' as objects in the schema
Allow 'links.self' as objects in the schema

The spec says that a link can be either a string or an
object: http://jsonapi.org/format/#document-links

However the schema enforces that `self` links must be
strings: https://github.com/json-api/json-api/blob/509ee949c621cee5683c959d4268386e1a592b83/schema#L158-L162

It is also a bit odd that the properties and descriptions in
`definitions/links` seems to be relationship-specific: https://github.com/json-api/json-api/blob/509ee949c621cee5683c959d4268386e1a592b83/schema#L154-L168 ,
but this definition is referenced from resource: https://github.com/json-api/json-api/blob/509ee949c621cee5683c959d4268386e1a592b83/schema#L144-L146
and top level: https://github.com/json-api/json-api/blob/509ee949c621cee5683c959d4268386e1a592b83/schema#L38-L43
link objects.

@steveklabnik has confirmed in GH issue #1159 that the spec is the
source of truth and the schema might lag behind.

This change allows the self link to be an object as well as a string. It
also makes sure that each property in the `links` object is a
`definitions/link` (as per spec).
It also separates a relationshipLinks definition that seems to carry
some relationship-specific descriptions.

Fixes #1159

json-api/json-api,json-api/json-api,json-api/json-api,json-api/json-api,json-api/json-api