dont always refocus on source, such as when input is target
only unbind body events if already bound
redo .testClose() to handle input targets differently
Automatically rewritten for npm.