Only render async frames to texture once per frame

This prevents multiple needless calls to obs_source_get_frame and other
functions.  If the texture has already been processed, then just render
it as-is in any subsequent calls to obs_source_video_render.
Improve async source render timing

This helps ensure that an asynchronous video source is played as close
to its framerate as possible, reduces the risk of duplication as
much as possible, and helps to ensure that playback is as smooth as
possible.
WinHandle: Do not close handle on operator &

This is not a com pointer; it should not release/close the handle when
an & operator is used, it should only return the handle value.  Clearing
is only used on assignment.
win-dshow: Allow automatic handling of source res

On an asynchronous video source, the source resolution is automatically
handled by the core, and set to the resolution of the last video data
that was sent.  There is no need to manually specify a resolution.
win-dshow: Add FFmpeg decoding support
win-dshow: Clear video/audio frame data on init
win-dshow: Implement decoding of encoded devices
win-dshow: Implement dynamic format change support

This adds support for dynamic format changes on the fly.  Format,
resolution, sample rate, can all now be changed by the current
directshow device on the fly.
win-dshow: Properly log colorspace on format fail
win-dshow: Use a single thread per device

This prevents certain issues I've encountered with devices where they
expect to shut down in a specific thread they started up in, as well as
a number of other issues, such as the configuration dialogs.

The configuration dialogs require that a message loop be present, and
this was not the case previously because everything was in the video
thread, which has no windows-specific code.

Configuration/crossbar/etc dialogs will now execute correctly.
Do not call dlclose on modules

This apparently can cause issues with certain modules (as noted by
faruton with his browser plugin)