Preheat the oven to 350 degrees F. Grease and flour a 9x13 pan (see notes for other pan sizes.)
Shred the carrots using a food processor or grater and set them aside.
In a large mixing bowl, whisk the eggs, oil, applesauce, water and vanilla until combined. Whisk in the sugar until mixed evenly.
In another bowl, stir together the flour, cinnamon, allspice, salt, baking soda and baking powder. Stir those dry ingredients into the wet ingredients in your large bowl, just until moistened. Gently fold in the carrots (using an under-and-over motion) with a spatula, until they are evenly distributed.
Transfer the batter to your pan and bake for 30 minutes, or until a toothpick inserted in the center comes out with a few moist crumbs. Let the cake cool completely before frosting it.
For the frosting, in a large bowl, beat the cream cheese, butter and vanilla with an electric mixer until light and creamy. Gradually beat in the powdered sugar until smooth.
In a separate (ideally stainless steel) bowl, and with clean, dry beaters, beat the heavy whipping cream until stiff peaks form. Fold the whipped cream into the frosting and then whip to combine it, just until blended. The frosting should be smooth and creamy.
Frost the cake when it is completely cool. Garnish with walnuts, if desired. Store the cake in the refrigerator (I stick toothpicks in the cake and gently cover it with foil.) Take out the cake several minutes before serving, for best taste.
For a standard round, three-layer cake, double the cake and frosting ingredients. Check the cakes for doneness after 20 minutes. You can decorate the cake with chopped walnuts sprinkled on the sides and around the edges of the top of the cake, if desired. You can even decorate with orange and green icing piped into the shape of little carrots, if you are artistic. For a 10x15 large glass pan, double the cake ingredients and use 1.5 times the frosting. Add 10-13 minutes to the baking time listed.