added check that user exists and call to refreshAliases
checked whether user already exists
and on update only use the non-null properties of the user passed in (except for 'suspensionReason')
added refreshAliases function to get them into its _values
made it implement ArrayAccess
changed last test and then added another to check that Aliases had properties that are accessible as array elements