In a mixer fitted with a whisk attachment (or using a hand mixer), whip the egg whites until stiff but not dry. Refrigerate.
Heat the oven to 350 degrees F. In a mixer fitted with a paddle attachment (or using a hand mixer), cream the butter until smooth. With the mixer running, slowly add the sugar and mix. Add the vanilla, almond, or coconut extract and mix well.
Sift the flour 3 times with the baking powder (this is to lighten the cakes). Add a third of the flour mixture to the butter mixture and mix. Add half of the milk to the butter mixture and mix. Add another third of the flour mixture and mix. Add the remaining milk and mix. Add the remaining flour and mix until smooth. Fold in the egg whites.
Cut 2 round parchment disks to fit 9-inch cake pans. Butter and flour the pans then place the parchment disks on the bottom of the pans. Divide the batter evenly between the 2 pans. Bake until firm to the touch and almost dry in the center, 20 to 25 minutes. Let cool in the pan.
Make the frosting: Off the heat, combine the egg whites, cold water, sugar and cream of tartar in the top of a double boiler. Whisk until smooth. Place over boiling water and whisk constantly or beat with a hand mixer until the frosting is stiff and holds peaks (this will take about 10 to 15 minutes). Remove from the heat and whisk in the vanilla. Let cool, whisking often.
Turn out the cakes and brush off any crumbs. Place 1 layer on a cake stand and cover it with frosting. Place the second layer top side down and press lightly. Frost the top and sides. Press coconut all over the surface of the cake and serve.