Refactor TempFile.

Changes to the code:

* removed "closed" (unused)
* removed "_writer" and "_reader" (because neither is private)
* changed from Reader and Writer to InputStream/OutputStream (for flexibility)
* removed private File field (unused after construction)
* removed Writer implementation (clarifies the API)
* made inputStream and outputStream val, not def (clarifies the API)
* wrote API documentation

Changes to tests (aside from porting API changes):

* refactored to use Scope (tighter tests)
* removed double-write + double-read (that's OutputStream, not TestFile)
* removed "test there is only one reader object" (API guarantees it now)
* removed "test write() fails after close()" (that's OutputStream, not TempFile)
* added "test reading works after close() write"