Refactored to have a ButtonFactory class within ProgramPanels to
separate out button creation logic and to give one point of coupling
between ActionListeners and buttons instead of doing this in the
ProgamPanel classes