If interacts don't have output, disable the dirty control highlighting.
Implement readonly and locations parameters to interacts

readonly=True immediately disables the controls, so they can only be changed programmatically

locations is a dict that specifies, for each variable, a jQuery selector in which to put the control.  The special "_output" control can also be specified.  Any controls not named are automatically added to the default layout.  To work correctly, the jQuery selectors should be empty divs or spans that are children of an element with class "sagecell".  The locations will be emptied before the controls are created.  The idea of the locations parameter is to make it easy to have custom layouts for the controls and outputs, possibly separated all over a page.