Implement automatic video scaling (if requested)

Add a scaler interface (defaults to swscale), and if a separate output
wants to use a different scale or format than the default output format,
allow a scaler instance to be created automatically for that output,
which will then receive the new scaled output.
Use forward instead of include

Had a bit of an include loop going on there which caused this issue to
occur.
Fix improper structure dependency

I actually did compile that last commit and misread the failed projects
as 0.  I'm just going to put the conversion stuff in video-io.h stuff
because it requires it anyway, and video-scaler.h already depends on
video-io.h for the video_format enum anyway.
Properly clamp audio timing and remove warnings

If audio was under, it originally did a full reset of the audio timing.
However, resetting the audio timing when this happens is kind of a bad
thing.  It's better just to clamp the value to the expected timestamp to
ensure seamless audio output.

Also, implement audio timestamp smoothing to ensure audio tries to be as
seamless as possible.
- added missing header for linux
added linux test module with first implementation of a screengrabber using the xshm extension for x11
Added initial Mouse pointer lib

Added library to get the mouse pointer with the XFixes
extension and draw it via a sprite.
Improved mouse cursor handling

If the mouse pointer changes but has the same size
as before, the texture will be updated.
The mouse pointer is now moved with a matrix function.
Added Blending for mouse pointer
some cleanups

- added some documentation
- removed some debug statements
Moved screen grabber code to _tick function

Moved the screen grabbing and texture generation to the
_tick function in order to keep _render fast
Implemented _tick function in xcursor library

Implemented a _tick function in the xcursor library,
so the cursor texture and position can be updated
from the input plugin _tick function.
Removed unnecessary members from data struct
migrated xshm video source to the new plugin api
added initial pulse audio input plugin

- first try at implementing a pulse audio input plugin,
  it is currently completely untested.

- added license headers to source files
In the API update the diffuse effect got renamed to image.
Removed unnecessary buffer

Instead of copying the data from pulse to a local buffer and
then push it to obs, the pointer from pulse is now used and
pa_stream_drop() called afterwards.
fixed warnings
reformatted source to kernel style
use pa_mainloop_iterate instead of own implementation

pulse audio provides it's own convenience function to
iterate the mainloop, no need to use a custom one.