To make the lamb marinade, place onion, garlic, coriander leaves and spices in the bowl of a food processor and process to form a paste.
Place the lamb in a non-corrosive bowl. Spread the marinade over the lamb, cover and refrigerate overnight, or at least 3 hours.
To make the lamb tagine, preheat oven to 150°C. Heat the oil over high heat in the base of a large casserole dish that has a lid. Add the lamb, and brown on each side. Reduce heat to medium and add the tomato paste, canned tomatoes, water and cinnamon. Bring the mixture to a steady simmer, cover with the lid, place in the oven and cook for 1¼ hours. Add the dates and olives and cook for a further 30 minutes.
When almost ready to serve, place the saffron in a small bowl and pour over 2 tablespoons boiling water. Allow to stand for 15 minutes.
Place the couscous in a separate bowl with the butter and salt. Pour over 2 cups of boiling water, add the soaked saffron with its water and cover immediately. Stand for at least 10 minutes before removing the cover and fluffing with a fork.
To make the macadamia gremolata, combine all ingredients and sprinkle generously over the lamb.