Adds yield around resource on devise controllers

If you want to add a new behavior to your devise controllers but you don't want to override devise's default workflow, just pass a block around resource.

This would give you for example, the ability to trigger background jobs after user signs in and continue with the usual devise workflow.

```ruby
class Overrided::PasswordsController < Devise::PasswordsController

  def update
    super do |resource|
      BackgroundWorker.trigger
    end
  end

end
```
We do it around the resource, because all devise controllers has the resource as main subject, so it should be available to make decisions. 
This way, we avoid copying and pasting the whole devise controller method just to add an extra behavior. Just like this:

```ruby
class Overrided::PasswordsController < Devise::PasswordsController

  def update
    self.resource = resource_class.reset_password_by_token(resource_params)
    BackgroundWorker.trigger

    if resource.errors.empty?
      resource.unlock_access! if unlockable?(resource)
      flash_message = resource.active_for_authentication? ? :updated : :updated_not_active
      set_flash_message(:notice, flash_message) if is_navigational_format?
      sign_in(resource_name, resource)
      respond_with resource, :location => after_resetting_password_path_for(resource)
    else
      respond_with resource
    end
  end

end
```