Favour declared mapping over keyForAttribute, if defined;

keyForAttribute, if defined, is useful for defining custom changes for all keys on a particular serializer, be it for the application or just a particular resource. The custom attr-based mapping should be maintained, and should precedence, over the keyForAttribute.

Broke down the ternary operators for increased readability.

Adds integration test for mapping > `keyForAttribute` precedence
Allow `attr` mapping in `belongsTo` & `hasMany` attributes;

Related attributes should still be able to have mappings defined for them. The normalizing compliment to these mappings, `JSONSerializer#normalizeUsingDeclaredMapping`, are applied to all attributes including `belongsTo` and `hasMany`.

Adds integration test for mapping > `keyForRelationship` precedence;
Merge pull request #2078 from f3ndot/serialize-using-declared-mapping

[BUGFIX] Use declared mapping during serialization, even if keyForAttribute or keyForRelationship are defined