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
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.
Module to HP LaserJet Printer SNMP Enumeration
Added Extended SMTP Open Relay aux module
Added DNS recursion amplification scanner
Post get_envs library methods
Copy Meterpreter return hash

Dont add a key if no value is found
Powershell cmd encoder
Cant handle space characters either
Keep it secret keep it safe
Changed dns_amp to avoid false positives