In a small bowl, stir together the garam masala, salt, cumin, coriander, turmeric, chili powder, sugar, and cayenne.
In a separate bowl, combine the chicken, HALF of the garlic & ginger, yogurt, 2 1/2 Tablespoons of the spice mixture, and lemon juice. Cover and marinate in the refrigerator for at least 30 minutes or up to 12 hours.
Once the chicken has finished marinating, in a large heavy skillet, melt the butter over medium high heat.
Sear the chicken on all sides until it is almost cooked through. It will finish cooking in the curry.
Remove the chicken from the pan and reduce the heat to medium heat.
Deglaze the pan with the coconut water, scraping any brown bits off the bottom of the pan. (Canned coconut milk is usually separated. Poke a butter knife through the thick white cream later on top. Carefully pour the water from below the cream layer directly from the can into the pan. Reserve the cream for the end.)
Add the onion and shallot. Sauté until softened for 5-7 minutes.
Add the remaining spice mixture, garlic, and ginger. Satué for 2-3 minutes.
Add the crushed tomatoes & water, chicken, and chickpeas. Bring to a light boil. Cover and reduce heat to medium low. Simmer for 10 minutes.
Stir in the spinach.
Once it has reduced in volume by about half, stir in coconut cream. Taste and add salt if needed.
Simmer until spinach is completely wilted. Serve over steamed basmati rice with chopped cilantro.