Refactor Soft Delete Specs

Just for more discussion

This one was much harder. There's a few inline comments I want to make for discussion, but I'd also like input on what's left in https://github.com/OregonDigital/oregondigital/blob/feature/TrySoftDeleteSpecs/spec/features/soft_delete_spec.rb , which is primarily "display things that are queried". Any thoughts on how to pull that out? Or is this just the only way to avoid mucking about in Blacklight stuff?
`allow(controller).to receive(:asset).and_return(asset)`

I would refactor this instead of what's above, into a nice method like

```ruby  
RSpec.configure do |c|
  c.include Module.new do
    def stub(obj, method_name, dsl={})
      with = dsl[:with] || (method(method_name) if methods.include?(method_name))
      raise ArgumentError, <<-EOS.chomp
method :#{method_name} required and not provided. Either provide the argument via `with: #{method_name}` or as method available to self, possibly via :let
EOS
      end

      allow(obj).to receive(method_name).and_return(with)
    end

    private
    def dsl
      @dsl ||= Hash.new do |hash, key|
        found_key = hash.keys.detect do |current|
          current.eql?(key.to_s)
        end

        hash[found_key]
      end
    end
  end
end
```

Which would be used like this:
```ruby  
stub(controller, :asset, with: asset)
```
Or like this:
```ruby  
let(:asset) { 'something' }
stub(controller, :asset)
```
The more specific hash argument takes precedence to the let option. This is clearly untested and might not work as is, I didn't TDD this out for a github comment. :smile: 

That's just an idea. Otherwise, I find `allow(thing).to recieve(method_name).and_return(double)` not so bad.