Refactor associations

TODO: There’s still some caching we could do, instead of creating a new
Association object each time the method is called.

Idea:

  # Old:
  Post.find(10).comments(approved: true)

  # New:
  Post.find(10).comments.where(approved: true)

  # Both will trigger `GET /posts/10/comments?approved=true`

The `where` method would just add attributes to the currently used
`method_attrs` hash. I think that might just work. But it would break
current code that uses `association_name(foo: 'bar')`.
Add caching and #where to Association
Improve readability
Make sure we pass blocks
Do not populate resource attributes with data fetched with extra parameters
Add Her::Model::Relation
Improve Relation
Remove a few useless #to_sym calls, again
Add first_or_create and first_or_initialize
Do not fetch belongs_to association if there are no foreign_key value
Add #build and #create for associations