To Make The Sauce: Melt the butter in a heavy-bottomed saucepan or an oven-safe skillet.
Whisk in the flour and cook, stirring constantly, until the paste cooks and bubbles a bit, avoid browning, about 2 minutes. Add 3 cups of milk, continuing to stir as the sauce thickens. Bring the sauce to a boil. Add the nutmeg, dry mustard, cayenne pepper, salt and black pepper, to taste. Reduce the heat and cook, stirring for 2 to 3 minutes more.
Over low heat, gradually add the Cheddar, Gruyere (or Fontina) and 1 cup Parmesan cheese, stirring constantly until all of the cheese has melted. Add the remaining 1 cup of milk and 1/4 cup cream. Taste and adjust the seasonings, if needed. Add the cooked pasta to the sauce mixture and stir to coat evenly (it will be soupy, but will come together). Set aside.
To Make The Rest: Bring a pot of salted water to a boil and cook the pasta until nearing al dente, but not fully cooked; drain.
Preheat the oven to 400 degrees F.
In another large skillet, cook the bacon until crispy and golden brown. Remove the cooked bacon from the skillet, reserving 1 tablespoons rendered bacon fat. Crumble the bacon and set aside.
In a small bowl, combine the bread crumbs, chopped parsley and 1 tablespoons of the reserved bacon fat, stirring to coat the bread crumb mixture. Sprinkle the crumb mixture over the top of the macaroni then sprinkle over the crumbs the 1/2 cup Parmesan cheese.
Transfer macaroni to a large (12x14) buttered baking dish (I added the bacon on top at this point). Bake until the top is browned and the sauce is bubbling, 20 to 25 minutes. Top with crumbled cooked bacon. Let sit 5 minutes before serving.