libobs: Add data signal to audio sources

This adds a new signal to (audio) sources which is emitted whenever new
audio data is received from the source. This enables other code that is
interested in the raw audio data to directly access it when it becomes
available.
libobs: Add update interval property to volmeter

Add a property to the volume meter that specifies the length of the
interval in which the audio data should be sampled before the
audio_levels signal is emitted.
libobs: Add peak hold property to volmeter

Add a property to the volume meter that specifies the time for which
peak value should be held until it is reset.
libobs: Add level calculations to volmeter

Use the new audio_data signal from sources to calculate the volume
levels in the volume meter.
libobs: Remove audio levels handler from volmeter

Remove the the signal handler for the volume_level signal of audio
sources from the volume meter in anticipation of using the levels
calculated in the volume meter itself.
libobs: Signal own levels in volmeter

Signal updated volume levels when they become available in the volume
meter. The frequency of the updates can be adjusted by setting a
different update interval.
libobs: Remove volume level signal from obs_source

Remove the calculation of volume levels and the corresponding signal
from obs_source since this is now handled in the volume meter.
Code that is interested in the volume levels can either use the
volmeter provided from obs_audio_controls or use the audio_data signal
to gain access to the raw audio data.
obs: Remove update time from volume meter

Remove the update time check from the volume meter since it is no longer
nescessary. The update interval can now be set with the volmeter which has
the added benefit of not loosing data where previously updates had been
skipped.
libobs: Add NV12_Reverse shader
libobs/media-io: Fix recursive lock in video

In certain cases the video thread could end up trying to lock itself
recursively.  This just allows the mutexes to safely be locked
recursively.
Basic UI: Raise bitrate limit to 1000000

I don't know why on earth I set the limit to 16000.  There's no reason
why there should really be a low hard limit.
libobs: Use extern "C" on export headers if C++

I neglected to surround some files with extern "C", so if something
written with C++ used the files it would cause function exports to not
be mangled by it correctly.
libobs: Expose NAL enums in obs-avc.h

I encountered some cases where I needed to use these enumerations
outside of the file, so this allows other modules to use AVC
enumerations without having to redefine them each time.  Especially
useful for custom encoder modules.
libobs: Add function to determine AVC keyframes

Added obs_avc_keyframe that returns whether an avc packet is a keyframe
or not.  This function is particularly useful for when writing custom
encoder plugins.
libobs: Fix bug when SEI not present

If an encoder did not possess any SEI data, it would never send data at
all because the sent_first_packet wasn't set despite the first packet
being sent.
obs-outputs: Wait for packet before header output

Waiting for the first packet to arrive before sending the headers helps
prevent issues with certain types of encoders that may not get their
header/SEI until the first packet has been received.
win-dshow: Use obs_avc_keyframe instead of own
win-dshow: Put device id mangling in separate file

This is going to be used for other code as well, so may as well put it
in its own file.
win-dshow: Allow use of YV12 video format

Previously, due to a bug in libdshowcapture, the NV12 format was
actually being used for YV12 erroneously, and no actual support for YV12
existed.  This fixes the bug with NV12 and adds support for YV12.
win-dshow: Move module loading to separate file

The main module code was originally all packed in to the win-dshow.cpp
file, which isn't exactly ideal or clean if one wants to add other
things to the module as a whole.