Cook the macaroni in a large pot of boiling salted water until done, about 5 to 7 minutes. Drain and toss it with 2 tablespoons butter; set aside.
Heat the oven to 350 degrees F.
Coat a large baking dish with 1 tablespoon butter and set it aside.
Put the milk into a saucepan and add the clove studded onion, garlic, bay leaf, thyme, and mustard. Warm over medium low heat until the milk starts to steam, about 10 minutes. Remove from the heat and let the flavors infuse while you make the roux.
In a large pot over medium heat add 2 tablespoons butter and the flour. Cook, stirring, for about 2 to 3 minutes; don't let the roux color.
Strain the infused milk onto the roux, whisking constantly to avoid lumps. Cook, stirring often, for about 5 minutes until the sauce is thick.
Remove from the heat and add 1/2 the grated Cheddar and 1/2 the Parmesan; stir until it is melted and smooth. Taste and adjust seasoning with salt and pepper. Pour this over the macaroni, add the chunks of Cheddar, and mix until well blended; put this into the prepared baking dish.
Sprinkle the remaining Cheddar and Parmesan cheeses evenly over the top. Bake until the top is golden and crusty, about 25 to 30 minutes.