Cake: Preheat oven to 350°; grease and flour an 8" round cake pan.
Beat the egg whites until stiff in a large bowl; in a small bowl beat the egg yolks until light; add to the whites and beat together; slowly add the sugar, beating for 5 minutes.
Sift the flour, baking powder and salt together; in a saucepan heat the milk and melt the butter.
Stir the dry ingredients and milk mixture into the egg mixture as quickly as possible; stir in vanilla and lemon extract if using.
Pour batter into pan and bake 25-30 minutes, until toothpick tests clean; cool 10 minutes, remove from pan and cool completely on wire rack; slice the cake into two layers.
Filling: In a double boiler over medium-low heat, cook sugar, flour, salt and milk for 15 minutes, stirring constantly until thickened and bubbly.
Temper the egg with the cooked mixture and pour back into the pan; cook another 3-5 minutes until thickened; remove from heat, stir in vanilla or orange extract and cool completely with plastic wrap on custard surface; spread on bottom cake layer, add top layer.
Frosting: Bring the sugar, cornstarch, chocolate, salt and water to a boil; cook, stirring, 3-5 minutes or until thickened enough to coat a spoon thickly; remove from heat, add butter and vanilla and stir until combined.
Cool a bit, but while still warm, pour and spread frosting over the top of cake, allowing some to drip down sides if desired; there may be more frosting than you need, use it for another purpose.