In a large ziplock bag, marinate chicken pieces in lemon juice, chili power and salt. Refrigerate for 15-20 mins. Add the overnight marinade ingredients and refrigerate overnight (or a minimum of 45 minutes if you don't have time).
To cook the chicken: Melt butter in a large pot (I used my dutch oven) and add onion, garlic, green chili (or jalapeño) and cook for 30 seconds. Stir in ginger, cinnamon, cloves, cardamom, corriander, fenugreek leaves and garam masala then add chicken, marinade and all. Cook over medium heat, stirring continuously, until chicken is no longer pink in the center, about 10-15 minutes or so depending on the size of your chunks of chicken.
Once chicken is thoroughly cooked, stir in tomato puree, chili powder, cashew butter, sugar, salt, cream and milk. Simmer for about 5 minutes then serve over rice with a side of warm naan.