a number of small changes

- streaming mode not supported error
- now returns a buffer rather than a string
- when a file is null, passes it through
fairly large refactor

- fix load path for user libraries
- return a file object with new contents
- entirely different and more realistic tests