Grind the chopped cilantro (keep some aside for garnishing) and all other marinade ingredients (except yogurt) to a smooth paste in a food processor. Pour into a large bowl and stir in yogurt; mix well. Add the chicken pieces and mix well. Cover the bowl and refrigerate. Allow to marinate overnight.
Thread the chicken onto skewers and keep ready. Preheat your oven or grill to medium high (400F). Grill chicken until cooked through, about 8 to 10 minutes.
Sauce: In a deep pan, over medium-high heat, melt butter and add the onion. Cook until soft. Add the cardamom, garlic, and chilies. Saute until fragrant, about 1 minute. Deglaze pan with white wine. Add the garam masala, brown sugar, and tomatoes; mix well. Cook until the tomatoes are soft and a thick paste forms. Stir in cream. Add saffron and grilled chicken; stir. Cook, stirring occasionally for about 5 more minutes. Remove from heat and stir in cilantro. Adjust seasoning with salt, to taste. Garnish the dish with chopped cilantro leaves and serve hot with Naans and steamed rice.
Garam Masala (optional): Place the cumin, coriander, cardamom, peppercorns, cinnamon, and cloves in a dry heavy skillet over medium-high heat. Toast the spices, stirring occasionally, until they turn several shades darker and give off a sweet smoky aroma, about 10 minutes. Do not raise the heat to quicken the process, or the spices will brown too quick and not be toasted all the way through. Cool completely.
Working in batches if necessary, transfer the mixture to a spice mill or coffee grinder and grind to a powder. Stir in nutmeg and saffron. Use immediately or store in an airtight container in a cool, dry place for up to 3 months.
Makes about 1/2 cup