(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.
libobs-opengl: Fix styling (80 column limit)
Merge pull request #270 from jp9000/remove-type-pointers

Remove type pointers
Fixed NULL pointer dereferencing in linked lists
Merge pull request #271 from GoaLitiuM/master

Fixed NULL pointer dereferencing in linked lists
Ensure num_backbuffers > 0 in gs_swapchain_create
Do not modify gs_init_data parameter in gs_create
(API Change) Use const params where applicable

This Fixes a minor flaw with the API where data had to always be mutable
to be usable by the API.

Functions that do not modify the fundamental underlying data of a
structure should be marked as constant, both for safety and to signify
that the parameter is input only and will not be modified by the
function using it.
cmake: Properly check for Threading support
cmake: Refactor growing list of library locations
cmake: Replace FFMpeg modules with single module

Now using components instead of one find_package call per module
cmake: Change obs helper macros to functions
cmake: Add helper function to install plain files
cmake: Export plugin data destination