Changed user constructor, userForId to use "id" field to find user
To support the use of multiple adapters (each of which may refer to a user by a different unique identifier), each user now contains an "id" field that holds a list of these identifiers. userForId will now check that list for each user to find a match, and when a new user is constructed the list will be initialized with the id used to create the user.