refactor fake_remote_grader, use context manager (#1730)

In order to support other kinds of remote grader failure modes, useful
to abstract that functionality into something more general.  Created an
abstract base class (by convention only).

Implement this as a context manager to ensure that the urllib2 cleanup
happens for me.  Cleaner and more reliable.
interactive tests: factor xml out and share (#1730)
interactive grader tests: three failure modes (#1730)
interactive autograder: retry logic, handle more exceptions (#1730)
interactive autograder: more precise watchword checks (#1730)
Merge pull request #2131 from Stanford-Online/sef-1730-interactive-errorhandling

Add retry logic and broader error handling to the interactive autograder (#1730)