Preheat oven to 400 degrees F.
Generously grease a 2 quart casserole dish with softened butter, and set aside.
With a mandoline or very sharp knife, slice potatoes into very, very thin slices, about 1/8" thick.
In a medium sized saucepan, melt butter over medium high heat.
When butter is light and foamy, add garlic and saute for 1 minute, until soft and very fragrant - stirring a few times to prevent burning.
Slowly add in flour, whisking vigorously for about one minute.
Add in milk slowly, whisking vigorously, until there are no more lumps.
Keep whisking until mixture is thick and coats the back of a spoon.
Turn off heat and remove pan.
Add cheeses, dry mustard (optional), herbs, paprika, salt and pepper, and stir until smooth.
Start to arrange and layer half the potatoes and onions in greased casserole dish, pour approximately half of the cheese sauce over potatoes, sink in, and let sit for a minute or two to help it soak in.
Repeat with remaining potatoes, onions, and cheese cream sauce.
Sprinkle top of potatoes with cheese.
Cover in nonstick aluminum foil.
Place casserole on a baking sheet, to catch any extra drips, and bake for 60 minutes.
Remove foil and bake, uncovered another 25-30 minutes.
Potatoes should be soft, tender, and the cheese should be smoothly melted.
Broil on HIGH for a minute or two for extra browning and crispiness.
Sprinkle the top with diced chives, thyme, or parsley and serve.