add file sub-project to omnitool

Initially just contains a module for working with temporary files.
Is there a reason that `fileName` has to be provided?  It seems as though omitting it would do just as well:
```scala
/**
 * Provides a temporary `File` for performing some `action`.  The file is not actually created
 * on-disk, since it is assumed that the `action` will do this.
 */
def withTemp(action: File => Unit): Unit = { /* ... */ }
```