1. Rinse chicken in cold water, inside and out. Pat dry with paper towels and place breast side up in a roasting pan.
2. Make the marinade by placing yogurt and the next 10 ingredients in a food processor or blender. Purée until smooth. Spoon marinade all over the chicken, cover, and refrigerate at least overnight and up to 2 days. Bring to room temperature before proceeding.
3. Preheat oven to 500 degrees. Wipe the marinade off the chicken and pat chicken dry. Rub the kosher salt and pepper all over the bird. Place in a clean roasting pan, breast side up, and scatter onions around it. Pour 3/4 cup of the chicken stock into the bottom of the pan, and add the saffron.
4. Put the chicken into the oven legs first and roast for 40 to 45 minutes. (After the first 15 minutes, baste the chicken and the onions with the remaining stock and make sure that nothing is sticking to the bottom of the pan. After another 15 minutes, baste everything again, stir the onions, and- if the chicken is getting too browned- cover the chicken with foil).
5. When the chicken is done, remove it from the pan, allowing all the juices to run back into the pan. Set the chicken aside and let rest for 10 minutes. With a slotted spoon, remove onions from the juices.
6. Carve the chicken and arrange pieces on a serving platter. Spoon caramelized onions over each piece, and serve immediately.