editUser and setUserInfoformation don't allow you to change the username.
Username currently appears to be the unique identifier for a user, whilst it is good to be unique, it is also currently impossible to change that username.
A user should have an internal unique id like the 'id' field from getUser() which ensures unique identification, which would allow for usernames to be edited.
editUser(token, UserObject) should become editUser(token, UserID, UserObject) this way you could allow for:
$userobj = getUser($token, 'demouser') ; To pull down the user info.
$userobj[username] = "newusername" ; To change it, and other details. e.g comment etc
$result = editUser( $token, $userobj[id], $userobj) ; To push up the changes, including a new username.
There would need to be checking to ensure that the new username was unique and available, this could simply throw an error if it is not usable.
setUserInformation could simlarly become setUserInformation($token, $userID, $userobj) ;
This would allow for greater flexibility for integrating Confluence user management with existing systems that might be in place.
Usernames should be changable without having to delete the user.