Updated cmake files for ffmpeg plugin

Also, fixed an enum name issue.  No clue why visual
studio actually compiled that without warnings/errors
Do test recording to a specified file

It will now output to a a filename that you specify when you click the
record button.  This is just for testing.
Use AVI instead of MP4 for testing

The codecs used for AVI seem to have less of an impact than the MP4
codecs at the moment.
Fix memory leak in OSX test code
Align output width to 16 byte alignment

The 444->420 conversion function will crash if you don't align the
output width to a 16 byte boundry.
I shouldn't have committed before compiling

Note to self - compile before committing.
Move alignment code to obs_reset_video

It wasn't properly being set for the graphics textures as well, so it
would end up causing SSE to crash due to alignment
Revamp API and start using doxygen

The API used to be designed in such a way to where it would expect
exports for each individual source/output/encoder/etc.  You would export
functions for each and it would automatically load those functions based
on a specific naming scheme from the module.

The idea behind this was that I wanted to limit the usage of structures
in the API so only functions could be used.  It was an interesting idea
in theory, but this idea turned out to be flawed in a number of ways:

 1.) Requiring exports to create sources/outputs/encoders/etc meant that
     you could not create them by any other means, which meant that
     things like faruton's .net plugin would become difficult.

 2.) Export function declarations could not be checked, therefore if you
     created a function with the wrong parameters and parameter types,
     the compiler wouldn't know how to check for that.

 3.) Required overly complex load functions in libobs just to handle it.
     It makes much more sense to just have a load function that you call
     manually.  Complexity is the bane of all good programs.

 4.) It required that you have functions of specific names, which looked
     and felt somewhat unsightly.

So, to fix these issues, I replaced it with a more commonly used API
scheme, seen commonly in places like kernels and typical C libraries
with abstraction.  You simply create a structure that contains the
callback definitions, and you pass it to a function to register that
definition (such as obs_register_source), which you call in the
obs_module_load of the module.

It will also automatically check the structure size and ensure that it
only loads the required values if the structure happened to add new
values in an API change.

The "main" source file for each module must include obs-module.h, and
must use OBS_DECLARE_MODULE() within that source file.

Also, started writing some doxygen documentation in to the main library
headers.  Will add more detailed documentation as I go.
Make some admends to obs-source.h documentation
Move enum obs_source_type to obs-source.h
Fix the OSX test source

Used the wrong function name with the video_render value.  This is what
I get for not compiling it on mac first.
..and the OSX test program
Add a bit more documentation

- Add bit more documentation to some of the main headers

- Fix alignment for the size of the name string of a obs_data_item.
Revamp rendering system to allow custom rendering

Originally, the rendering system was designed to only display sources
and such, but I realized there would be a flaw; if you wanted to render
the main viewport in a custom way, or maybe even the entire application
as a graphics-based front end, you wouldn't have been able to do that.

Displays have now been separated in to viewports and displays.  A
viewport is used to store and draw sources, a display is used to handle
draw callbacks.  You can even use displays without using viewports to
draw custom render displays containing graphics calls if you wish, but
usually they would be used in combination with source viewports at
least.

This requires a tiny bit more work to create simple source displays, but
in the end its worth it for the added flexibility and options it brings.
Added more paths to gitignore for building
Rename obs_viewport to obs_view

I felt like the name could cause a bit of confusion with typical
graphics viewports, so I just changed it to view instead.
Remove majority of warnings

There were a *lot* of warnings, managed to remove most of them.

Also, put warning flags before C_FLAGS and CXX_FLAGS, rather than after,
as -Wall -Wextra was overwriting flags that came before it.
Fix a some more linux/GCC specific warnings
Fix inttypes.h usage

...I neglected to put a '%' character before using the PRI* macros.
Fix bug with linux build

...Screw it.  %llu it is.