PSEXEC Refactor

Move peer into mixin
PSEXEC should use the psexec mixin
Add disconnect option to psexec

Allow the module to prevent the mixin from ending the SMB session.
Add getenvs, update getenv, change extract_path use

Stacks of modules were using `extract_path` where it wasn't really semantically correct
because this was the only way to expand environment variables. This commit fixes that
up a bit.

Also, I changed the existing `getenv` function in `stdapi` to `getenvs`, and had it
support the splat operator. I added a `getenv` function which is used just for a
single variable and uses `getenvs` behind the scenes.

The meterpreter console `getenv` command now uses `getenvs`
Fix download_exec to better handle spaces

It was just wrong. Now it actually works.
Update to masked credential format

* To support change in Pro export format. Previous format looked
like an XML element, for no reason, failed validation.
Merge remote-tracking branch 'metasploit-framework/master' into masked-cred-format-update
Merge remote-tracking branch 'metasploit-framework/master' into masked-cred-format-update
Merge remote-tracking branch 'metasploit-framework/master' into masked-cred-format-update
Merge branch 'adjust_getenv_api' into stop_abusing_expand_path
Resolve require order
Removing old report API example

* This should be in Pro code since reporting over the API is Pro
only. Also this version is now mad out of date.
First pass of WMI support

Close but more to do.
Final tweaks for WMI support
Add error message support

This commit enables returning of error messages based on the HRESULT.
They still aren't nice, but they're better than nothing.
Add module for BID-46926
Add some randomization to the ROP chain
Fix the dwSize parameter
Module to HP LaserJet Printer SNMP Enumeration
Added Extended SMTP Open Relay aux module
Added DNS recursion amplification scanner