Rewrite FileSearch and improve ScanDirectoryTree.

- FileSearch is now just one function, and it converts the original glob
  into a regex on all platforms rather than relying on native Windows
  pattern matching on there and a complete hack elsewhere.  It now
  supports recursion out of the box rather than manually expanding
  into a full list of directories in multiple call sites.

- ScanDirectoryTree returns the parent entry rather than filling parts
  of it in via reference.  The count is now stored in the entry like it
  was for subdirectories.

- .glsl file search is now done with DoFileSearch.

- IOCTLV_READ_DIR now uses ScanDirectoryTree directly and sorts the
  results after replacements for better determinism.
Fix CopyDir to not require source and dest paths to end with "/".
Disable some stuff in IPC_HLE when determinism is required.

This includes net, which is nonsensical to "sync" in netplay/replays
(could have the host do the Wii networking in future though...), and USB
keyboard, which just needs some love to do the same.
Disable /dev/usb/hid too.
Don't allow Wiimote BT addrs to diverge, just in case it makes a difference.
The old g_want_determinism check in WiiSockMan missed a few cases.  Move to net.cpp.

Specifically, things like GETHOSTBYNAME, GETHOSTID, etc. could be done
without creating a socket, which is what the old check blocked.  Now we
check at the ioctl and ioctlv handlers.  Might be possible to get a bit
more realistic behavior in future by filtering individual ioctls, but it
probably doesn't matter.
Refactor File::GetUserPath to make it not *set* user paths.

Split that into a separate function, SetUserPath; also, use recursive
calls in order to remove a redundant copy of the derived path
calculation code.
Add a mode to use a dummy Wii NAND.

Eventually, netplay will be able to use the host's NAND, but this could
still be useful in some cases; for TAS it definitely makes sense to have
a way to avoid using any preexisting NAND.

In terms of implementation: remove D_WIIUSER_IDX, which was just WIIROOT
+ "/", as well as some other indices which are pointless to have as
separate variables rather than just using the actual path (fixed, since
they're actual Wii NAND paths) at the call site.  Then split off
D_SESSION_WIIROOT_IDX, which can point to the dummy NAND directory, from
D_WIIROOT_IDX, which always points to the "real" one the user
configured.
Add a quick check to ScheduleEvent_Threadsafe to ensure it doesn't happen in deterministic mode.
Don't randomly generate a serial number in deterministic mode.
Fix Wiimote netplay.

- Change the Wiimote emulation SYSCONF write to write to the temporary NAND if in use.
- Fix up SysConf API so this actually works.

Kind of a hack.  Like I said, this can be cleaned up when configuration
is synced...