Set the locale per-thread instead of globally when generating shaders. Add cross-compatible versions of newlocale, uselocale and freelocale.

This commit fixes a rare race condition when generating shaders because setlocale is global.
Build fix: Android NDK doesn't support any locale switching.

Also, Mac OS X doesn't support DX9.
Adding Travis CI script

because a build test is useful
Adding CLI mode to GUI build etc.

Open

Adding option to open a state or movie. (A movie could previously be started but not through open)

When opening a state or movie the ISO is selected by ID rather than last used because that's more accurate

Disable the Play and Start Recording options if no ISO is set instead of showing the BrowseForDirectory dialog because that's less confusing

The BootManager is changed to try the default and last iso if an empty string is provided

If a file isn't found the ISO library is searched because that allow a relative path

Benchmark

Adding option to play a movie as a benchmark by running it without a frame limit and measure the frame rate

Name

Changing the nogui suffix to cli because it's a more common term
Adding config path argument

because that allow easier benchmark for different settings
Writing file name in file error

because that makes it easier to locate the problem
Adding state version check when loading state

because it should be checked before boot
Loading log settings for CLI

because that allow disabling logs for CLI
Logging to OutputDebugString when the process is not debugged too

because the message can be read in DebugView which can be more efficient than reading it in the program's log window

Writing OSD messages to LogManager too because that make the message (f.e. about state version)

* permanent (for future reference) rather than temporary
* visible to CLI mode if it occurs before window creation
Adding log with only time prefix

because that save space when the information isn't meaningful, f.e. for a hex dump
Adding data to movie

because that allow determining

* type: GC and Wii input order
* frame: synchronisation
Removing Wii input use of an unsaved state value

because that allow the complete state to be loaded
Changing the dual thread movie Wii input update frequency

from 200 Hz to `VideoInterface::TargetRefreshRate`

because that allow recording GC and Wii input simultaneously in the same array
Synchronising dual thread movie input with frame drawing instead of a tick interval

because that make recording more deterministic
Disabling _CRTDBG_DELAY_FREE_MEM_DF

because it use much memory
Listing found OpenAL devices

because the knowledge can be useful
Fixing log for uncommon letters

because they can result in an empty string
Saving real Wiimote state

because that's simpler than reconnecting
Removing muted Wiimote audio

because that reduce writes
Moving thread name function to a class

because that's better organisation