SDL2.0.3 in externals round 2.

Commits are now easily split up for simple reviewing.

Instead of mandating SDL2, this still allows SDL1.2 to be used.
cmake will check for shared SDL2 and SDL 1.2 libraries, only in that instance will it fail and build SDL 2 from externals.

This doesn't drop the SDL 1.2 compatibility code from ControllerInterfaces/SDL like the previous PR did.