Preheat the oven to 220°C.
Drizzle the mushrooms with olive oil, and then sprinkle them with salt and pepper. Roast in the oven until deep golden brown, 20 to 25 minutes. Set aside. Turn down the heat to 180°C.
Next, fry the thick slices of bacon until chewy, but not yet crisp. Chop up the bacon into bite-size bits. Set aside.
In a large skillet over medium-low heat, saute the onions in 1 tablespoon of the butter, stirring occasionally, until golden brown, about 15 minutes. Set aside.
Cook the macaroni until just undercooked. Set aside.
To make the sauce, melt the remaining 4 tablespoons butter in a large pot over medium heat. Sprinkle in the flour, whisking to combine. Let the roux cook for a minute or so, whisking constantly.
Then pour in the milk, whisking constantly. Cook the white sauce until thick and bubbly, for around 3 to 5 minutes. Next, add the half-and-half milk, 1 teaspoon salt and 1/2 teaspoon pepper.
Spoon some of the hot white sauce into the beaten eggs to temper them, stirring with a fork to incorporate the mixture without cooking the eggs. Pour the tempered eggs into the white sauce, stirring constantly as you add them. Add the fontina, gruyere, Parmesan and goat cheeses. Stir until the cheese all melts.
Add the cooked macaroni and stir to coat. Splash in a little milk or hot water if needed for thinning.
Butter a 9x13 inch baking pan. Lay on half the onions, half the macaroni, half the mushrooms, half the gorgonzola and half the bacon. Repeat the layers, ending with the bacon. Bake until bubbly and hot, 20 to 25 minutes.
This is the stuff that dreams - and love handles - are made of.