My idea is to start out small with the possibility of expansion to handle more features. As far as actually sensing where a switch is, it depends on the switch. However, that's mostly a mechanical issue of actually sensing the switch position, and it's not always that easy.
My solution would be to use either Tortoise switch motors with the position contacts or Fastrack that has position sensing.
Alex (Ingeniero No1) was working a whole system that did very sophisticated switch position sensing, and was sensitive enough to catch partially thrown switches, don't know what happened to that project. I know he showed prototypes, and it looked very promising.