Joystick fixes/update for non-MSVC compilers

This PR is in addition to #701 and #702:

* This fixes building on non-MSVC compilers for Windows since they don't know `_tcsnlen()`.
* Changed logic so SFML tries to retrieve the paths from the user key first, machine key second (typical behavior for most registry settings).
* Removed the registry key length checks since that check is performed inside`RegOpenKeyEx()` anyway and cut-off keys might point to the wrong keys.
* Updated the error string retrieval to properly handle errors and not include a trailing line break.