====== FileSystem ======

The filesystem classes are implemented in Zim::FS. Normally you don't call this class directly but use the "''file( )''" and "''dir( )''" routines from Zim::Utils to construct filesystem objects.

//TODO: summarize FS classes//

//TODO: explain how to implement VCS sub classes//

//TODO: mention the Zim::FS::Buffer class//

-----

* Page should have a file API
	* use dir object in Store / Repository if any
	* check file
		* checks if file is within repository controlled dir(s)
			* call check file on repository (?)
			* merge this with function to make paths relative to page or notebook
		* needed to do correct OO lookup
		* GUI can still use simple File object for files outside this dir
	* get folder
		* replace "base" logic in parse tree
	* get attachment
	* make sure that the export "media" options work nicely together with attachments in document root


* store api  (Zim::Store::Documents)
	* get_document_dir(PAGE)
	* resolve_file(PATH, [PAGE])
	* store_file(FILE, [PAGE])
	* relative_path(PATH|FILE, [PAGE])

* page file api
	* get_document_dir()
		* return DIR or undef - does not need to exist
		* if it is undef, store and resolve could still work - UPDATE doc Zim.pm
	* resolve_file(PATH)
		* return absolute PATH if PATH is file:// uri
		* resolve relatively to DIR and return FILE object
	* store_file(FILE)
		* copy FILE to DIR
		* returns relative path
	* relative_path(PATH)
		* returns undef if PATH absolute and not relative to DIR
			* FIXME: maybe return file:// uri for abs paths ?
		* resolve relative to DIR
		* returns path relative to DIR
