Add implicit receiver support to `Object#with_options`

I've noticed that 99% of the cases I use `Object#with_options` to define a bunch of associations or validations in my models. The code could be much cleaner if we wouldn't have to pass explicit receiver to `with_options` block all the time, especially if it's gonna be the only receiver.

So, this pull request makes it possible. It's also fully backwards compatible and old syntax still works as expected.

Before:

```ruby
class Account < ActiveRecord::Base
  with_options dependent: :destroy do |assoc|
    assoc.has_many :customers
    assoc.has_many :products
    assoc.has_many :invoices
    assoc.has_many :expenses
  end
end
```

After:

```ruby
class Account < ActiveRecord::Base
  with_options dependent: :destroy do
    has_many :customers
    has_many :products
    has_many :invoices
    has_many :expenses
  end
end
```
Even though we don't support more than 1 arity, under the principle of least surprise, I'd flip these around (so that if someone for whatever reason passes more than one, behavior won't change).

`block.arity.zero? ? merger.instance_eval(&block) : block.call(merger)`