Correctly represent valid file names

Currently we use RawFilePath to represent file names in git, for example to entryName in TreeEntry:

data TreeEntry = Entry {
   44       entryName :: RawFilePath
   45     , entryMode :: Mode
   46     } deriving (Eq, Show, Read)

I believe, for example, that entryName can not contain '\NUL,' or maybe even '/'.

We should check what the rules are, and if appropriate make a wrapper type containing the validation.