Fix XkbSetMap when client->swapped
- _XkbSetMapChecks swaps part of the request, and is (potentially) called multiple times. Only swap the request the first time it is called.
- _XkbSetMapChecks returns an X status (where 0 means Success). In the case of an error that mistakenly returns 0, the remainder of the request is not checked and can lead to a heap smash.