function updateProfile (userId, username, email, sessionToken) {
  return dispatch => {
    dispatch(profileUpdateRequest())
    return appAuthToken.getSessionToken(sessionToken)
      .then((token) => {
        return BackendFactory(token).updateProfile(userId,
          {
            username: username,
            email: email
          }
        )
      })
      .then(() => {
        dispatch(profileUpdateSuccess())
        dispatch(getProfile())
      })
      .catch((error) => {
        dispatch(profileUpdateFailure(error))
      })
  }
}
## updateProfile
@param {string} userId -  objectId
@param {string} username - the users name
@param {string] email - user's email
@param {Object} sessionToken - the sessionToken

The sessionToken is provided when Hot Loading.

With the sessionToken, the server is called with the data to update
If successful, get the profile so that the screen is updated with
the data as now persisted on the serverx