Place chicken in a large pot and cover with cold water. Bring to a boil, reduce the heat so the water just simmers, and cook for 45 minutes. Turn off heat and transfer chicken to a large bowl to cool. When chicken is completely cool, remove the meat from the skin and bones, and place in a clean bowl. (Place bones and skin in a pot, cover with water, and let simmer for several hours. Strain, and transfer the stock to plastic storage containers. Refrigerate overnight. The following day, scrape off the fat and discard. Freeze stock.)
In a medium-sized soup pot add the oil and place over medium heat. Sauté the onion over medium heat until slightly caramelized, about 5 minutes. Add 3 of the chipotles and 1 tablespoon of the sauce from the small can of chipotles (or, if you like spice, add the whole can as I did).
Stir for one minute until the onions are nicely coated in sauce, then add the tomatoes and chicken stock. Season with a pinch of salt, then add the chicken meat to the pot, breaking up the big chunks as you add the meat.
Bring the liquid to a boil, reduce heat and simmer mixture very gently for 30 minutes. Coarsely chop the cilantro, add to the pot and stir to incorporate. Taste mixture, add more salt if necessary. Can be made a day ahead. To reheat, simmer mixture very slowly adding chicken stock if liquid becomes too thick.