windows compatibility fixes
reverted unnecessary changes to cleanUp() functions
IO Operators: Raise specific exceptions when a file can't be opened.
OpInputDataReader: Catch the exceptions and reraise them as a special exception that others can catch easily.
Added OpMetadataMerge (with test)
graph.py: Don't call setupOutputs() on an operator while it is being cleaned up.
tests: Minor cleanup.
MetadataMerge: return result.
graph.py: Initialize op._cleaningUp for all children as soon as the parent starts cleaning up.
Added OpDummyData for displaying "not available" data.
OpBlockwiseFilesetReader: Use OpDummyData for providing missing block stand-in data.
FileLock: purge() returns a bool to indicate whether or not a lockfile was found.
blockwiseFileset: Use lockfiles to ensure that there cannot be simultaneous access to a file that is being written.
BlockwiseFileset: Assert if we can't get a lock on a file we want to write.  Multiple processes shouldn't be competing for the same files.
FileLock: Instead of leaving the lockfile empty, give it some contents that might be useful while debugging.
BlockwiseFileset: Avoid AttributeError in __del__.
request: Old implementation has a few definitions to support forwards compatibility, for easy switching back and forth between implementations.
request_rewrite: After the callback signals are fired, clean the callback lists to free references to bound args quickly.
BigRequestStreamer: Cleanup an unused variable.
RoiRequestBatch: Fixed a memory leak and added a unit test.
RoiRequestBatch: Now works for both old and new request backends.
request: clean() removes children and result.
request: result is now a property with various asserts.