Rinse the lentils well under running water, until the water runs clear. Then place them in a bowl with the 3 cups water and soak for 30 minutes. Do not drain.
Meanwhile, mince the onion, garlic, and ginger.
Finely chop the cilantro, including stems.
Place the mustard seeds in a 5-quart Dutch oven or other pot with a heavy bottom, and cook over medium heat until they begin to pop.
Add the onion, garlic, ginger, and olive oil. Reduce heat to low and cook, stirring frequently, for 3 minutes.
Add the ground coriander, cumin, turmeric, paprika, and curry leaves, and continue cooking, stirring frequently, for 2 minutes.
Add the lentils and their soaking water, the tomatoes, honey, fenugreek, asafetida, and salt, and stir to blend.
Cover and simmer for about 20 minutes, until the lentils are fully cooked.
Stir in the butter, lemon or lime juice, and cilantro.