To make the cake, combine the butter, molasses, brown sugar and water in a small saucepan. Heat on low till the butter has melted and the mixture is fairly smooth, stirring constantly. Pour into a mixing bowl and let this cool for 10 minutes.
In the meantime, preheat the oven to 160 C. Grease a 9 inch springform tin (a 9x5 loaf tin also works) and set aside.
Now to the butter and molasses mixture, add the eggs, milk and grated ginger, whisking gently to combine.
Sift in the flour, cocoa, baking soda, salt and spices. Fold very gently to combine. There will be lumps, and that's ok. Don't be tempted to use a hand mixer as this beats too much air into the batter. In runny batters such as this one, excess air can cause it to crack in the oven (speaking from experience!)
Pour the batter into the prepared tin. Bake for 45 to 50 minutes, until a toothpick inserted in the center comes out clean or with a few moist crumbs.
Let the cake cool completely to room temperature. If you do find that the center is a little sunken, despite being fully cooked, don't worry. It can happen sometimes with liquidy batters. The frosting will fix it :)
To make the frosting, beat the butter and cream cheese together with a hand mixer on medium speed until smooth. Add the molasses and beat briefly to combine. Then add the sugar, beating again until light and smooth. Taste and add more sugar if you prefer. The frosting will be a little soft, so place it in the fridge for 30 minutes, or until firm enough to spread, but not hard.
Level off the top of the cake if needed, then spread the frosting all over it. Place the cake in the fridge for 20 minutes before slicing.
Store the cake for 4 to 5 days in the fridge, or frozen for a few weeks. Let individual slices come to room temperature before eating. Happy baking!