Start to abstract browse mode a little away from virtualBuffers, at first by allowing reporting of passThrough to be used on other TreeInterceptors.
Specifically:
* Add a browseMode module, which contains a BrowseModeTreeInterceptor which inherits from TreeInterceptor but at this stage provides no more. Simply just useful for is instance checking.
* Move virtualBuffers.reportPassThrough to browseMode.reportPassThrough.
* virtualBuffers.VirtualBuffer now inherits from BrowseModeTreeInterceptor rather than just TreeInterceptor.
* browseMode.reportPassThrough: add a onlyIfChanged optional keyword argument set to True by default. Setting this to false will force reporting all the time (ignoring the last report).
* globalCommands toggleVirtualBufferPassThrough script: toggle passThrough and report it on any BrowseModeTreeInterceptor, rather than just VirtualBuffers. However, only tweek diablePassThrough if its a VirtualBuffer.
* globalCommands toggleVirtualBufferPassThrough script: If a new BrowseModeTreeInterceptor is created on the fly, and its passThrough is off, then report the passThrough setting no matter what the last reporting was (i.e. ensure the user understands they just made the focus be in browseMode).