Add ipc-util static library for IPC functions

Originally I made the "win_pipe" stuff for named pipes on windows but it
was argued that it should be available to all modules and
programs/libraries that the modules might communicate with.

It cannot really be put in to libobs due to the fact that there would
hypothetically be things unrelated to libobs that might want to use it,
so I felt the best option was just to create a simple static library
specific for interprocess communication.

Non-windows versions of these functions are still yet to be implemented.
win-capture: Add hooking functions

These functions allow the safe hooking of windows functions,
specifically windows API functions that may or may not have built-in
machine code to help aid in reverse chain hooks.

If a new hook is applied to an existing forward hook, that hook will be
preserved to prevent that new hook's data from being removed
unintentionally.

Hopefully with all these precautions this will reduce the likelihood of
crashes and abnormal hook behavior, while allowing existing hooks to be
preserved, and allowing new hooks to be applied.
win-capture: Add hook helper functions for IPC

These inline functions simplify the process of using windows IPC
objects, such as mutexes and events.
win-capture: Add graphics-hook-info.h

This header contains global defines, structures, and helper inline
functions for the graphics hook that will be shared between game
capture, the hook, and the get-graphics-addrs helper application.
win-capture: Add d3d8 headers

These headers allow Direct3D 8 to be used.
win-capture: Add get-graphics-offsets helper

Before, game capture would find addresses to important graphics
functions by creating a graphics context for the desired API inside of
the hook, and then find the function addresses that way.

The big problem with that is that the context could often cause the
hooked application to crash, especially if another hook was active.

This bypasses that entire need by a simple console application that
creates the contexts, finds the hook address offsets and then returns
them via console output.
win-capture: Add inject-helper program

This program simply injects a library in to the target progress using
SetWindowsHookEx.
win-capture: Add graphics-hook library

This library is a completely refactored and rewritten version of the
original graphics hook.  The code is more clean, readable, and has a
variety of new features, such as scaling and forcing memory capture.

Currently, only D3D9, 10, and 11 are implemented.  (This commit may be
updated on this branch)
win-capture: Add cursor capture capability
win-capture: Add game capture

This adds the windows version of game capture.

New features:

- An option to hook any fullscreen application without borders
  automatically so that no configuration is required.

- An option to force memory capture for the sake of compatibility with
  things such as SLI, multi-adapter setups (usually laptops), as well as
  the ability to be used with the OpenGL renderer

- An option to force scaling before IPC transfer, reducing the transfer
  bandwidth which is especially important for memory capture

- Logging improvements, game capture log will now be sent via pipe
  instead of written to a separate file, making diagnosing problems a
  little bit easier

- Performance improvements, especially due to the new scaling options as
  well as reducing the number of texture copies required all around