Add butter into skillet and melt on medium heat.
Slowly add in onions, separating them into single slices.
Add wine or cider and let reduce on low, without stirring.
Add salt and stir.
When onions have reduced in size by half and begin to slightly brown, add spices and stir.
Let reduce further, until dark brown (not burned).
When onions are deep brown (about 1 hour later), add in stock.
Let cook on low for another 30 minutes- do not let boil.
Preheat oven to broil on high.
Place the slices of bread on a baking sheet and spread a little oil on them. Bake about 1 minute till just dried out. Set aside.
Scoop soup into ramekins or oven ready crocks and top with toasted bread and shredded cheese.
Add ramekins to the oven and broil until cheese is browned and bubbly.
Remove from oven and top with cilantro, green onions, or red pepper flakes, if desired.
Serve immediately.