Refactor xsection 2d

 - splits single frame display off into a separate class, needed for live/streaming display
 - change limit functions to only take the image as an argument.  Management of the limit arguments is taken care of by using closures 
 - updated the demo to work with the changes.
What does "dirty" mean in this context?