Use a custom matcher for entity attributes

* entities are expected to respond to the accessor for each attribute
* entities shouldn't respond to the attribute setter if it has been marked as
  private (this pattern has emerged in the codebase)
Merge pull request #659 from moneyadviceservice/entity-attributes-custom-matcher

Use a custom matcher for entity attributes