Provide a much nicer file tab-completion

See commit for closer description of the behaviour.

To re-iterate, we can now use tab-completion even on partial name matches rather than being restricted either the whole file name match or nothing at all.