1) For the dough: Make a sponge by cracking the eggs into a 2-cup liquid measure and adding enough warm water to equal 2 cups. Beat until blended, and pour into a large mixing bowl. You can also put the sponge into the bucket of your bread machine, set on the dough cycle. Add 1 tablespoon of the sugar, 3 cups of the flour, and the yeast. Mix until well blended. Cover and set aside.
2) For the butter: While the yeast begins its work, set up the butter inlay. Mix the butter and 1/2 cup flour just until the mixture is smooth and well blended (no hard lumps). You can do this with a mixer, a food processor, or with a spoon, by hand. Be careful not to beat the mixture at high speed; you don't want to incorporate any air. Lightly flour a piece of plastic wrap, place the butter mixture on it, and use a dough scraper to pat it into an 8-inch square. Wrap the butter and put it in the refrigerator on a flat surface for at least 30 minutes.
3) Finish the dough: Stir the vanilla, if using, and the melted butter into the sponge. Whisk together the remaining 2 1/2 cups of the remaining flour, the rest of the sugar, the dry milk, and the salt. Add to the sponge and mix until you have a soft but kneadable dough, either by hand, in your mixer, or using the dough cycle of your bread machine. Check the dough after kneading for 4 to 5 minutes, adding more of the measured flour if the dough is still sticky.
4) Once the dough is smooth and elastic, pat it into a square shape, wrap it loosely and refrigerate it for 30 minutes.
5) Rolling in: Remove the chilled dough from the refrigerator and put it on a lightly floured surface. Gently roll it into a square about 12 inches across. Unwrap the butter slab and place it in the center of the dough at a 45° angle, so it looks like a diamond in the square.
6) Fold the flaps of the dough over the edges of the butter until they meet in the middle. Pinch and seal the edges of the dough together; moisten your fingers with a little water, if necessary.
7) Dust the top with flour, then turn the dough over and tap it gently with the rolling pin into a rectangular shape. Pick up the dough to make sure it isn't sticking underneath, dusting under with more flour if necessary, then roll from the center out until you have a rectangle 20 inches long by 10 inches wide.
8) When you've reached the proper size, take a dry brush and lightly sweep off any excess flour, then fold the bottom third of the dough up to the center, and the top third over that (like a business letter). Line the edges up on top of each other, and even up the corners so they're directly on top of each other. Take a dab of water if you need to, to tack the corners together. You've now made your first "turn."
9) Turn the dough package 90° to the right, so it looks like a book ready to be opened. If the dough is still cool to the touch and relaxed, do another rolling and turning the same way. Make a note of how many folds you've completed and the time, and wrap the dough. Return it to the refrigerator for at least 30 minutes. Repeat the above folding and turning process one more time, for a total of four turns. Once completed, wrap the dough well and refrigerate it for at least an hour, and preferably overnight before using.
10) Shaping the croissants: Using half the dough at a time, roll it to a 12" x 18" rectangle. Trim the edges of the dough on every edge using a ruler and pizza wheel. This cuts off the folded edges that would inhibit the "puff." Cut the dough in thirds lengthwise and in half through the middle. This will give you six 4" x 9" pieces. Cut each piece in half diagonally, and arrange them so the points of the triangles are facing away from you. It's okay to stretch them out gently to elongate them when you do this. Cut a 1/2" notch in the short edge of the triangle.
11) If you want to, this is the time to place a teaspoon of filling at the base of the triangle. Roll up the dough, starting with the notched edge and working toward the point. Make sure the point is tucked under the bottom of the croissant. If you have to stretch the dough a little to make that happen, it's okay. You can also use a drop of water on the tip to help it stay in place. Form the crescent by bending the ends toward the center where the tip is tucked underneath. Place the croissants on a lightly greased or parchment-lined baking sheet. Cover and chill for 30 minutes. You could also freeze the unbaked pastries at this point.
12) To bake the croissants: Take the croissants out of the refrigerator, and preheat the oven to 425°F. While the oven is heating, brush the tops of the croissants with an egg well-beaten with 1 tablespoon of water.
13) When the oven is hot, bake the croissants for 15 minutes, then reduce the oven's temperature to 350°F and bake for another 15 to 20 minutes. The croissants should be a deep golden brown, even where the dough overlaps; you don't want any raw dough in the center. Remove from the oven and cool on a rack.