Preheat oven to 350F. Lightly butter a 12-inch gratin pan or shallow baking dish. Bring a large pot of water to a boil. Add the cauliflower and simmer until tender, about 10 minutes. Drain and set aside. In a small saucepan, melt the butter and whisk in the flour. Stir until a paste forms, then add milk incrementally, stirring until smooth. Cook over low heat, stirring, until thick. Add the remaining ingredients and remove from heat. Arrange cauliflower in baking dish and cover with sauce. Bake until bubbling and golden, about 40 minutes.