Generalize search_association

[MSP-10826](https://jira.tor.rapid7.com/secure/RapidBoard.jspa?rapidView=84&view=detail&selectedIssue=MSP-10826)

Allow far associations to be searched with

```ruby
search_associations near: :far
```

# Verification Steps

- [x] `bundle install`

## `rake spec`
- [x] `rake spec`
- [x] VERIFY no failures

## `rake yard`
- [x] `rake yard`
- [x] `open doc/Metasploit/Model/Search.html`
- [x] VERIFY the module docs are helpful.
- [x] VERIFY the module docs don't have any grammatical, technical, or typographical errors.
- [x] `open doc/Metasploit/Model/Search/Attribute.html`
- [x] VERIFY the module docs are helpful.
- [x] VERIFY the module docs don't have any grammatical, technical, or typographical errors.
- [x] `open doc/Metasploit/Model/Search/Association.html`
- [x] VERIFY the module docs are helpful.
- [x] VERIFY the module docs don't have any grammatical, technical, or typographical errors.
- [x] `open doc/Metasploit/Model/Search/With.html`
- [x] VERIFY the module docs are helpful.
- [x] VERIFY the module docs don't have any grammatical, technical, or typographical errors.

# Post-merge Steps

Perform these steps prior to pushing to master or the build will be broke on master.

## Version
- [ ] Edit `lib/metasploit/model/version.rb`
- [ ] Remove `PRERELEASE` and its comment as `PRERELEASE` is not defined on master.

## Gem build
- [ ] gem build *.gemspec
- [ ] VERIFY the gem has no '.pre' version suffix.

## RSpec
- [ ] `rake spec`
- [ ] VERIFY version examples pass without failures

## Commit & Push
- [ ] `git commit -a`
- [ ] `git push origin master`

# Release

Complete these steps on DESTINATION

## Version

### Compatible changes

If the change are compatible with the previous branch's API, then increment [`PATCH`](lib/metasploit/model/version.rb).

### Incompatible changes

If your changes are incompatible with the previous branch's API, then increment
[`MINOR`](lib/metasploit/model/version.rb) and reset [`PATCH`](lib/metasploit/model/version.rb) to `0`.

- [ ] Following the rules for [semantic versioning 2.0](http://semver.org/spec/v2.0.0.html), update
[`MINOR`](lib/metasploit/model/version.rb) and [`PATCH`](lib/metasploit/model/version.rb) and commit the changes.

## JRuby
- [ ] `rvm use jruby@metasploit-model`
- [ ] `rm Gemfile.lock`
- [ ] `bundle install`
- [ ] `rake release`

## MRI Ruby
- [ ] `rvm use ruby-1.9.3@metasploit-model`
- [ ] `rm Gemfile.lock`
- [ ] `bundle install`
- [ ] `rake release`

# Post-release
- [ ] Update https://github.com/rapid7/metasploit_data_models/pull/75 to used the released `metasploit-model`.