Execute condition in the association context.

Execute the given `condition` in the association context. Alternative implementation for #872. 

Also extracted the `association` code responsible to build the attribute and fetch the conditions into private methods.

cc/ @rafaelfranca 

UPDATE:

The `condition` should be executed in the object context, because simple_form does not call the association object, instead it builds the relation using the class from the reflection. See: https://github.com/plataformatec/simple_form/blob/master/lib/simple_form/form_builder.rb#L189

Example
```ruby
class User
  has_many :cars, conditions: -> { { user_id: self.id } }
end

# simple form will do:
Car.where(user_id: user.id)
```