Major improvements to program selector

This is a very rough version -- needs animation and code cleanup, but
it's good enough for me to start porting over all the previous presets.