Improve loading of solution files

- New argument to force a rebuild of the cache
- Gracefully handle missing projects in a solution
- Handle more different xml namespaces
- Support more edge cases
Add utility script to print the contents of a solution's cache.
Add usual vim plugin loading protection
Warn if multiple solutions have been found in the project.
Use the correct documentation extension.
Improvements to YCM dynamic flags.

- Fallback to a "companion" item (e.g. header/source) or a nearby item
  when no flags are found for an item.
- Finding a "companion" is also exposed as a standalone script.
- Ability to pass extra clang flags, including some from a special
  file found in the .vimcrosoft directory.
- Add support for PCH and other forced-include files.
- Add options for short/long args, or forcing forward slashes.
- Debugging/troubleshooting options, including dumping a batch file and
  response file to run clang directly, and the ability to auto-load a
  solution's last known environment when running in command line.
Add built-in properties to the solution environment before resolving items.
Don't crash trying to list a solution file if no cache exists yet.
Fix handling of spaces in configs/platforms for autocomplete.
Save all unsaved buffers before building.
Add more caching to listing solution files.
Report error but don't crash when a solution points to a missing project.
Add `None` file items to source solution files.
Fix typo in command registration.
Don't enable auto-finding solutions by default, leave it opt-in.