Arrowhead take 2

Hey Blake,
Implemented the changes you were looking for I think,

Totally agree with the comment you made about overkill.  I knew what I was doing, I just kept going because it was practice for me.  I just could not stand the nested collection.  Normally, I would just break up the large method and move on.  The key to refactoring is restraint, because you can definitely go down the rabbit hole like I did.

Anyway, let me know what you think.

Thanks!
Unfortunately there are more things wrong here. First, if you're going to have a block with a parameter, the parameter should be on the same line. So, like this:
```ruby
filter('lorem') do |arrowhead|
  # do stuff
```
Secondly, I think it's confusing to have an argument that's the same name as the method. I've heard it all, there's often a compelling reason, but it's still a potential source of confusion.

Last, I quite like the part where you pass in the message. However, it's a bit clunky. It might be better to have a constant or another method that gives you your error message. Then your method might look something like this:
```ruby
def region(region_filter)
  filter(:region) do |arrowhead|
    arrowhead.region == region_filter
  end
end

# ...

private def filter(filter_type, &block)
  result = @arrowheads.select(&block)
  fail EMPTY_RESULT[:region] unless result.any?
  ArrowheadIndex.new(result)
end
```
Something like that anyway. Also, unless is preferred over if for guard conditions & the like.