Ensure LHOST is set with default for payloads

MSP-9228

Move the hosts logic from
Metasploit::Framework::Command::Exploit::Simple so that
Metasploit::Framework::Compatibility::Payload can use it to set 'LHOST'
on the payload_instance.data_store when finding a compatible payload by
size.
Memoization to limit number of payload instances

MSP-9228

Memoize
Metasploit::Framework::Module::Target::Compatibility::Payload#compatible_class_reference_names
so that #each_compatible_instances is not enumerated multiple times for
each call to #compatible_class_refererence_names.
Use fixed version of compatible_privilege_with

MSP-9228