Enigma Simulation - My Journey

I spend a lot of time trying various code solutions before I got to where I am now. I tested various dictionary and list configurations; I played around with algorithms on paper and in code; Some (not all) of those ended up as "demo" programs.

One of the design problems I have not finalized (in my head) is how much functionality to put in the EnigmaMachine vs the EnigmaRotor objects. I keep vacillating back and forth and have not come to any conclusion. Should EnigmaRotor just be a namespace or should it also contain methods.