Fix device capability checking in v4l2 input.

The capabilities flags that were used previously describe all
capabilities the physical device offers. This would cause devices
that are accessible through multiple device nodes to show up with
all device nodes while only one of the nodes might actually offer
the needed video capture capability.

If the device has more nodes the CAP_DEVICES_CAP flag might be set
in which case the device_caps field is filled with the capabilities
that only apply to that specific node that is opened.
Do not explicitly set a default device in v4l2 input.

This was added at a time where the source properties dialog did not
pop up automatically on source creation. Now when the properties are
displayed the first device in the select input will be selected by
default if there was none already specified by the source settings.

This will make the code cleaner and also save one redundant round of
device enumeration.
Use helper function to set input in v4l2 input.
Use helper function to set format in v4l2 input.

Since the helper function also needs to pack/unpack the resolution, the
pack/unpack functions were moved to the helper library and prefixed with
v4l2_ in order to avoid possible collisions.
Use helper function to set framerate in v4l2 input.
Add option to leave settings unchanged in v4l2 input.

This adds an additional option for all settings to leave the current
configuration of the device unchanged.
Minor refactoring in v4l2 input.

We don't really need to use a dstr here, simply using the
right format specifier for blog will suffice.
Refactor update function for v4l2 input.

The old implementation of this function assumed that there would be some
settings that could be changed on the fly without restarting the
capture. That was actually never used for any setting.
Refactor source structure in v4l2 input.

Due to the refactoring of the update function the separation of data
members only to be accessed from inside/outside the capture thread is
no longer needed.
Add video format check in v4l2 input.

This adds a check whether the video format from the device is compatible
with obs. This could either happen if the "Leave unchanged" option is
selected for the video format, or if the driver simply overwrites the
requested video format.
Merge pull request #266 from fryshorts/v4l2-input

Fix device capabilities checking and add "Leave unchanged" option for all settings.
Add *32 and *64 build directories to gitignore.
Add more search directories for cmake modules

I actually did this because it makes it a bit easier to use with a
build from cross-compiled windows FFMpeg/x264 DLLs.  When compiling on
linux I just have it compile to a custom prefix directory for the
specific windows arch, then I just copy the arch dir back to my windows
HD when complete.  Adding this to the cmake allows me to use the compile
arch directories directly without modification.
win-dshow: Add debug macros for logging timestamps
win-dshow:  Change FFmpeg MPGA decoder

Apparently MPGA is equivalent to MP2, not MP1.
win-dshow: Update libdshowcapture to 0.3.3

Adds full support for the HD-PVR Rocket
Basic UI: Clarify "advanced encoder settings" text

Change checkbox with text "Advanced Encoder Settings" to "Use Advanced
Encoder Settings".  This way it will hint that the settings will be
disabled when unchecked.
Basic UI: Remove "CPU" from "x264 CPU Preset" text

I feel like people keep mistaking how x264 preset functions.  They often
associate it with their own CPU speed, and I feel the name does not help
with that issue.  I think it may be for the best to just take it out.
At best, it will keep people away from using it unless they know what
they're doing, and at worst, people at least won't be able to associate
it with their CPU as easily anymore.
Basic UI: Add "Use Constant Bitrate" advanced option.

It's better to use VBR for local recordings, so this option should be
nice for people who want to do that.
(API Change) Remove pointers from all typedefs

Typedef pointers are unsafe.  If you do:
typedef struct bla *bla_t;
then you cannot use it as a constant, such as: const bla_t, because
that constant will be to the pointer itself rather than to the
underlying data.  I admit this was a fundamental mistake that must
be corrected.

All typedefs that were pointer types will now have their pointers
removed from the type itself, and the pointers will be used when they
are actually used as variables/parameters/returns instead.

This does not break ABI though, which is pretty nice.