Begin adding config swapping support to RGUI.
Some cleanups in settings saving/load defaults.
Add Config Directory option to RGUI.
Update shader manager on game load.
Don't hardcode rgui.cgp/glslp as default.

In a multi-config environment, shader manager could conflict.
Instead, infer the default RGUI shader cgps/glslps from config path.

Fallback to old rgui.cgp/rgui.glslp if we use a default config.
Fix potential segfault on config swap.

Main Menu list can shrink and selection_ptr wasn't set to a sane value.
Set default save/state dirs properly in config_set_defaults().
Allow saving new config files directly from RGUI.

The file name is inferred to avoid typing.
Save game history path to config.
Save autoconfig dir to config.
Also save some driver settings.
Fix bug with use_float.

If audio driver changed from pulse to alsa via config change,
audio would be broken as use_float would be set to true.
Also save joypad driver.
Build fix.
Merge pull request #305 from libretro/configswap

Configswap