get ready for fancy laser show

1. ground work for a "spot properties" dialog
2. lots of re-factoring and splitting one huge file into manageable
pieces
3. some cleanup (more to come with the next commit)