Add more volume options

Added a "master" volume for the entire audio subsystem.

Also, added a "presentation" volume for both the master volume and for
each invidiaul source.  The presentation volume is used to control
things like transitioning volumes, preventing sources from outputting
any audio when they're inactive, as well as some other uses in the
future.
Add source audio sync offset setting
Add functions to enumerate source children/tree
Implement source activation/deactivation

Now sources will be properly activated and deactivated when they are in
use or not in use.

Had to figure out a way to handle child sources, and children of
children, just ended up implementing simple functions that parents use
to signal adding/removal to help with hierarchial activation and
deactivation of child sources.

To prevent the source activate/deactivate callbacks from being called
more than once, added an activation reference counter.  The first
increment will call the activate callback, and the last decrement will
call the deactivate callback.

Added "source-activate" and "source-deactivate" signals to the main obs
signal handler, and "activate" and "deactivate" to individual source
signal handlers.

Also, fixed the main window so it properly selects a source when the
current active scene has been changed.
Add volume signals
Implement volume handling

 - Remove obs_source::type because it became redundant now that the
   type is always stored in the obs_source::info variable.

 - Apply presentation volumes of 1.0 and 0.0 to sources when they
   activate/deactivate, respectively.  It also applies that presentation
   volume to all sub-sources, with exception of transition sources.
   Transition sources must apply presentation volume manually to their
   sub-sources with the new transition functions below.

 - Add a "transition_volume" variable to obs_source structure, and add
   three functions for handling volume for transitions:

   * obs_transition_begin_frame
   * obs_source_set_transition_vol
   * obs_transition_end_frame

   Because the to/from targets of a transition source might both contain
   some of the same sources, handling the transitioning of volumes for
   that specific situation becomes an issue.

   So for transitions, instead of modifying the presentation volumes
   directly for both sets of sources, we do this:

   - First, call obs_transition_begin_frame at the beginning of each
     transition frame, which will reset transition volumes for all
     sub-sources to 0.  Presentation volumes remain unchanged.

   - Call obs_source_set_transition_vol on each sub-source, which will
     then add the volume to the transition volume for each source in
     that source's tree.  Presentation volumes still remain unchanged.

   - Then you call obs_trandition_end_frame when complete, which will
     then finally set the presentation volumes to the transition
     volumes.

   For example, let's say that there's one source that's within both the
   "transitioning from" sources and "transition to" sources.  It would
   add both the fade in and fade out volumes to that source, and then
   when the frame is complete, it would set the presentation volume to
   the sum of those two values, rather than set the presentation volume
   for that same source twice which would cause weird volume jittering
   and also set the wrong values.
Clamp audio data after applying volume

Make sure audio multiplication is clamped, and also make sure that
larger volume values can be safely used.
For *_update, apply settings instead of replacing

Make it so obs_data settings input in to *_update are applied to the
existing settings rather than fully replace the existing settings.  That
way you can update with only certain specific settings, leaving other
settings untouched.  Of course if you're already using the original
settings pointer in the first place then you've already done that, so
it'll just ignore it because you've already applied them.
- 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.