First pass of WMI support

Not quite working, but a good deal done.
Last part of WMI support

There's some messy code in here, but that's what you get for dealing
with COM and nested variant arrays!
Comment out debugging, again
Last tweak to x64 for WMI
Add error message return support

The errors returned still aren't nice though.
Update ADSI code to support more types

When non-supported types were returned in queries, ADSI just pooped
itself and tore down the Meterpreter session. This a happy tester
Meterpreter does not make!

This code includes more support for ADSI types with attempts to be
semi-sane in stringifying them.

Plus, Meterpreter no longer crashes.
Add a bit of debug info
Fix small indexing issue resulting in a crash
Fix silly typo in header comment
Change the binary->string converter, add SID, warnings as errors

The existing implementation wasn't really solid and I never liked it
anyway. Egypt rightfully pointed out flaws in the code, so it has
been changed so that it allocates the required memory up front
and returns that string to the caller, who then has to free it up.

Added a function to render SIDS.

Made the build set warnings as errors. Still no idea why this wasn't
the case already.
Pulled in master and added a fallback for the SID stuff

I just realised I shouldn't have done that in a merge commit.

Conflicts:
	workspace/ext_server_extapi/ext_server_extapi.vcxproj
Added the notion of "group packets"

A group packet is a special packet that is to be used as a group of TLVs that
will live under another packet. Using this functionality means that we can
easily nest groupings of data to arbitrary depths, which wasn't something we
were able to do before easily.

The MSF side is easily capable of handling this scenario, but this side had
always been lacking.

The clipboard dump code has been updated to show how this can be used.
Merge branch 'upstream/master' into wmi_query_support

Conflicts:
	make.bat
	workspace/ext_server_extapi/ext_server_extapi.vcxproj
Rejig service initialisation

Gathering of function pointers is now done during initialisation. This
means that it doesn't have to be done each time a function is called
and allows for reuse across other functions.
Enable service control and status in queries.

This commit adds service status to the query functionality for a single
service so that it doesn't have to be found in the full list of services.

It also adds the ability for the caller to control services using the
typical start/stop/pause/resume/restart style functions. To use these
functions the caller has to have appropriate rights.
Fix comment type and reverse ternary condition
Fix incorrect comment for the WMI query function
Remove unused defintion
Change make script to work from correct folder

The existing make file would use `pwd` to figure out the current
folder instead of using the base directory of the script. This
causes issues when running commands from different locations (such
as in the case of from the meterpreter_binds folder).

This commit fixes this problem.
Land #69, WMI support

This also wants rapid7/metasploit-framework#2889