Preheat your oven to 350 degrees Fahrenheit and grease a rectangular baking pan with butter (I use a 9" by 13" pan).
Using a stand mixer or hand mixer, beat the butter and brown sugar on high speed until light and fluffy.
Beat in the molasses until combined and then add the eggs one at a time and beat them in on medium-low speed just until incorporated (scrape down the sides of the bowl to make sure everything is combined).
Add the grated ginger and lemon juice and beat on low speed until combined.
Add the flour, cinnamon, cloves, nutmeg, allspice and salt to a separate bowl and whisk until combined.
Add the dry ingredients to the butter mixture slowly, beating on low speed just until no streaks of flour remain.
Combine the boiling water and baking soda in a small bowl and add it to the batter slowly, stirring it in just until combined.
Scrape the batter into the prepared cake pan and bake at 350 degrees Fahrenheit for about 45-48 minutes or until a toothpick inserted into the centre of the cake comes out clean.
Set the cake to cool in the pan on a wire rack until it's cooled completely.
While you're waiting for the cake to cool, make the frosting by whipping together the butter and cream cheese on high speed until light and fluffy.
Add the powdered sugar slowly, about half a cup at a time and whip on high speed until it's all incorporated. At this time, add the milk (only if the frosting is stifa few drops at a time as it continue to whip on high speed. Stop adding as soon as the frosting has loosened up just a little bit and whip the frosting on high speed for 5-10 minutes, or until the frosting is very light and airy in texture.
Spread the frosting over the cake, only after the cake has cooled completely to room temperature. If you wish, refrigerate the cake for an hour or two for the frosting to set and let it sit at room temperature again for 15-20 minutes before cutting into it to serve.
Cut into square slices and serve!