Todo:
    capture clicks (event tap?), flip coordinates, pass through
    
    want source app, not Flipper, to be the "front application"
    
    overlay flipped image on top of underlying window, but have it transparent
    to the window manager (click needs to go to source app's window)
    
    redraw image when source window changes (notification?)
    
    track changes to source window position/size
    
    hotkey combination to start/stop
    http://stackoverflow.com/questions/4639244/osx-keyboard-shortcut-background-application-how-to
    
    
    
    
Resources:
  semi-transparent fullscreen window that passes mouse clicks through:
  
http://svn.cocoasourcecode.com/Shady/ShadyAppDelegate.m
http://svn.cocoasourcecode.com/Shady/MGTransparentWindow.m

	// Create transparent window.
	NSRect screensFrame = [[NSScreen mainScreen] frame];
	for (NSScreen *thisScreen in [NSScreen screens]) {
		screensFrame = NSUnionRect(screensFrame, [thisScreen frame]);
	}
	window = [[MGTransparentWindow windowWithFrame:screensFrame] retain];

  	// Configure window.
	[window setReleasedWhenClosed:YES];
	[window setHidesOnDeactivate:NO];
	[window setCanHide:NO];
	[window setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces];
	[window setIgnoresMouseEvents:YES];
	[window setLevel:NSScreenSaverWindowLevel];
	[window setDelegate:self];

    front window using cgwindowlist
    http://stackoverflow.com/questions/5286274/front-most-window-using-cgwindowlistcopywindowinfo
    
    son of grabber sample
   
Window list example:
    // Get window list
    NSArray *windowNums = [NSWindow windowNumbersWithOptions:NSWindowNumberListAllApplications];    
    for (NSNumber *n in windowNums) {
        NSLog(@"  window %@",n);
    }
    
    NSMutableArray *windows = (__bridge NSMutableArray *)CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly | kCGWindowListExcludeDesktopElements, kCGNullWindowID);
    
    for (NSDictionary *window in windows) {
        NSString *name = [window objectForKey:@"kCGWindowName" ];
        NSLog(@"Window dict = %@", window);
        CGRect bounds;
        CGRectMakeWithDictionaryRepresentation((__bridge CFDictionaryRef)[window objectForKey:@"kCGWindowBounds"], &bounds);
        NSLog(@"%@: %@",name,NSStringFromRect(bounds));            
    }


Object design:

 MirroredWindow : NSWindow
   +windowFromWindowID
            locate specified window, create, match frame, snap
 


    -refresh
            check for existence of source window (how?)
            check frame - move to match
            check image (checksum?), create new if necessary