In loose objects backend, constrain mkdir calls to avoid extra mkdirs

This updates the calls that make the subdirectories for objects to use a base directory above which `git_futils_mkdir` won't walk any higher.  This prevents attempts to mkdir all the way up to the root of the filesystem. This was causing problems on Windows systems using junctions because apparently a junction won't stat as if it is a directory.

Also, this moves the `objects_dir` into the loose backend structure as a flex array and removes the separate allocation, plus does some preformatting of the `objects_dir` value to guarantee a trailing slash, etc.