Delegate file ops

Seeing how you have this nice branch of Ivy already set up, I decided to go to you guys with this first.
Basically, I'd *really* love to be able to test my entire workflow, including the use of Ivy to publish things, and I'd like to do this safely. 
Now, since I'm using Java 7, there's a really nice tool called [memoryfilesystem](https://github.com/marschall/memoryfilesystem) which provides a Java 7 NIO `FileSystem` stored entirely in memory.
I can (and did) extend File to make all operations use a nio `Path` behind the scenes, but the blockers are all these `new File()` calls, as well as `new FileInputStream` etc. So I've decided to make all these into function calls, all centralised under Ivy's `FileUtil`, that can easily be overridden. (and of course, still compatible with Java 5).

I've got 7 tests failing so I'm handling those now, but let me know what you think.