Fixes #6518 - lookup the bmc smartproxy via subnets.id

This fixes 6518, by picking the smartproxy to use via subnet_id.  Before it was trying to find a dhcp_id or tftp_id that matched the subnet_id, but since it's a subnet id it really should be comparing subnets.id.

I'm not sure how it was working most of the time before, but with this change it works all of the time.
This fix will take all of them into account. 

It'll find all SmartProxies with a BMC feature in the Nic:;BMC subnet, there all of them will have a ```subnet_id === Nic::BMC.subnet_id```, so dhcp/tftp proxies will be taken in. 

To be honest I'd vouch for rewriting this a bit:

On app/models/smart_proxy.rb
```ruby
def proxies
  [subnet.dhcp, subnet.tftp, subnet.dns].compact
end
```

on app/models/nic/bmc.rb line 28

```ruby
proxy =  proxies.select { |proxy| proxy.features.map(&:name).include?("BMC") }.first
proxy ||= SmartProxy.with_features("BMC").first
```

And add some tests to that to : 
* ensure we find proxies in these subnets
* ensure we get any other BMC proxy if there's none on the Nic::BMC subnet
* ensure we fail if proxy is not present

@bwitt , feel free to take the code I attached here to the patch, or let us know if you think this is too much and we'll fix it promptly.