Group options together by category and add max-programs and exit-on-solution options. Now keep running unless exit-on-solution given
Move timing code into Timer and fix div by zero bug (who wrote this rubbish anyway?!)