Basic obstacle course dynamic time calculation

Based upon number of breeds remaining (more breeds left = faster time)
Only put obstacle course dialog contents into the DOM when they're visible

This will help prevent app slowdowns recalculating things that aren't
visible.
Refactor dynamic time calculations

Round to the neareast whole second.
Dynamically calculate the number of opponent breeds left.
Dynamically calculate obstacle course reputation earned
Catch the socket.io exception instead of ignoring it
Clean up color names in css