WindowsKernel Exploit Mixin And Module Refactoring

This PR adds a new WindowsKernel exploit mixin which offers convenient functions and reduces the amount of copy and paste code between the current modules. The functions provided are helpful for exploits which need to determine the address of ```nt!HalDispatchTable```, create token stealing shellcode, and other general tasks.  Out of the 5 exploits which seem to be copy and paste descendants from each other, the following 3 have been reworked to use the mixin:

* windows/local/ms11_080_afdjoinleaf
* windows/local/mqac_write
* windows/local/ms_ndproxy

The following two modules I left unchanged because I could not obtain access to the software for testing:

* windows/local/novell_client_nicm
* windows/local/novell_client_nwfs

Verification steps:
- [ ] Test the new ms11_080_afdjoinleaf exploit module
- [ ] Test the new mqac_write exploit module
- [ ] Test the new ms_ndproxy exploit module
Looking at the definition for EnumDeviceDrivers it designed to be called twice to get the correct out size for the array if the original size isn't large enough.