More PropertyTable refactoring - pull common code out into a Base, so we can plug in a different block reader/writer for NIO