Add error message support to the railgun code

This code was lost in the transition when the meterpreter source was
removed from the metasploit-framework source. I'm pulling this in by
request of @dmaloney-r7 who originally requested this code be inculded
as part of https://github.com/rapid7/metasploit-framework/pull/740

I added an extra bit of code to free up memory that is allocated by the
call to FormatMessage and forced the ASCII-version (FormatMessageA) of
the call.
Remove unused sniffer config, add PssdkVersion setting

* Rather than having various places where the PSSDK path is set scattered
  through the solution I created a property which contains the version.
  This means we can update that version property in the project and it'll
  take effect everywhere it's required.
* Removed debug and release configurations from ext_server_sniffer.
Updated build documentation

Added more detail around using the appropriate configurations depending on
whether you have access to the appropriate SDKs.
Build status and documnetation update

* Added the build status notification to the top of the README.
* Updated the order of details in the docs (put Linux build after Windows).
* Updated the details about where this repo came from.

Note: this PR should be merged AFTER #20 for ease of merging.
Add doxygen, begin documenting, kitrap0d tidy

* Added the doxygen binaries and configuration.
* Added a `make docs` which generates documentation to the `docs` folder.
* Added some documentation to various areas of the source that I was
  working with. Over time I'll be adding more and more rather than trying
  to do it all in one hit.
* Refactored the kitrap0d code a bit to try to reduce code size.
Land #20, update docs and project files.

Tested by merging and running a build, as proscribed by the README.md.
12 succeeded, 0 dailed, 2 skipped.
Land #22, more doc and proj updates

Again, tested with a successful run of the build.
Don't lie in the README.md
Land #26, Railgun error messages

See rapid7/metasploit-framework#2443 and rapid7/metasploit-framework#740
Fix railgun multi functionality

The main issue with things being broken was because the calling
convention was not defaulting to "stdapi" and hence the call would
fail. Adding the default fixed it.

While fixing this, I brought the mulit-call functionality up to speed
with the error message functionality, so the calls all return the
properly formatted error message.
More documnetation work
Even more docs
Add webcam thread to avoid COM-related crash

Webcam code was sometimes causing crashes in Meterpreter when attempting
to stop the camera after a frame had been captured. This appeared to be
because the thread that started the capture was not the same thread that
ended it.

CoInitialize() and CoUninitialize() need to be called on the same thread
and objects created on one thread need to be released on the same thread.
This change results in a new worker thread that is used for the lifetime
of the capture, and the callers have to interact with this thread via
basic threading events.

This is currently "proof of concept" code, rather than production-ready
code. The goal is to see if it solves the issue on the known targets
before tidying it up and locking it down for release.
Remove boiler extension and create 'bare' extension

The boiler extension wasn't used and was old so it was removed. I've added
a new "bare" extension which is, as it says, just bare and doesn't do
anything. This can be used to create new extension projets just by copying
and pasting, then editing a couple of small things.

This will be added to the documentation.
New ext docs, remove boiler from solution

Documentation now includes how to create a new extension using the bare
extension as a sample.
Doc changes, project fixes
Fix debug build of various components

No idea why they were broken, but they shouldn't have been. This fixes
them up and tidies a few other things up, especially the guts of the
stdapi project.
New extended API extension with window enum

Decided to kick off a new extended API extension with mubix and
kernelsmith to include some more advanced enumeration stuff. The goal of
this extension is to take stuff that wouldn't be part of the std api but
is rather useful for enumeration of a target once meterpreter has been
established.

This commit kicks things off with enumeration of top level windows on the
current desktop.
Land #28 OJ's Fix railgun multi call functionality
Free up user32 when we're done with it