Make Meterpreter Session Address Resolution Sane

If MSF can not match the visible IP address of a Meterpreter session
to an interface--it will attempt to find an IP address associated
with a default route and use it as the session's address.

This commit fixes the logic associated with this process. The old
logic only considers one IP address per Interface, even though an
Interface may have multiple addresses/masks associated with it.

This flaw led to situations where MSF would favor an IPv6 link-local
address over the IPv4 address associated with the default route,
solely because the IPv4 address was not the first value in the
addresses array.

[FixRM #7259]
Refactor load_session_info

All of this code is in sore need of some specs but I think this change
makes it a bit easier to understand what it is supposed to be doing.
Add specs for the new method
Merge remote-tracking branch 'upstream/land-2897-meterpreter-interfaces'