bug fixes and minor refactoring
* when writing to a file we now update the fsnode object
* when creating a file we now ensure that the directory that it belongs to exists
* refactored fsnode's update_from_cache method to take a cache_path instead of a file object