Fixes #381 - Firewall orders with interface groups

This commit is intended to fix a problem where orders would be rejected when adding a firewall to a bare metal server with a public interfaces that are grouped (usually redundant public interfaces). If you had two public interface cards, each at 100Mbps, the previous code would try to order a 100Mbps firewall (which would be rejected) when it needs to order a 200Mbps firewall.

The code now looks for user interface groups in the public interface for a bare metal server, and sums the max speed of components in that group to get a speed for the group.  It then selects a firewall speed that is the maximum of all the group speeds.

Another issue with the previous code is that it based its firewall selection off the current port speed of the primary interface for a server when the firewall has to be able to handle traffic at the max speed of the interface.