refactor dircache module api to return obj

hide the usage of 'new' inside the module instead of clients having
to call the constructor directly
make sure we *never* write a sha with 'ref:' prefix

as this breaks CGit to point of it not recognising the .git dir
as being a valid repo!
fix to find all modified files, not just first one
quiet down debug logging
start on clean cmd
placeholder for gitignore file support