Three submodule status bug fixes

This is written to fix #1395 and #1421.

1. Fix sort order problem with submodules where `mod` was sorting after `mod-plus` because they were being sorted as `mod/` and `mod-plus/`.  This involved pushing the "contains a `.git` entry" test significantly lower in the stack.
2. Reinstate behavior that a directory which contains a `.git` entry will be treated as a submodule during iteration even if it is not yet added to the `.gitmodules`.
3. Now that any directory containing `.git` is reported as submodule, we have to be more careful checking for `GIT_EEXISTS` when we do a submodule lookup, because that is the error code that is returned by `git_submodule_lookup()` when you try to look up a directory containing `.git` that has no record in gitmodules or the index.

Not huge changes, but somewhat subtle ones. I see these fixes as a prelude to addressing #1391 which is really a feature request for more information when getting status data. I think the solution there is to create a public status iterator that can be queried for data, including details of submodules (hence, trying to address these bugs).