Don't munge port ranges that are already Ranges.

For ranges with first > last, Array(range) yields [], causing port_range
to be set to 0..0. The API returns IpPermission objects with port_range
set to things like 0..-1 or 8..-1 for specific ICMP packet types. These
were previously impossible to create using IpPermission::new.

It was also rather silly to be creating and immediately garbage
collecting two arrays (e.g. for 0..65535) when we really want the range.