Improve "Format Selected Text".

Previously, only the fragment would be fed to clang-format. This meant
that if the text was already indented, the indentation would be thrown
away. Also, if a fragment of code was selected, it might be formatted
incorrectly, since clang-format didn't have context.

Now, it feeds the entire file, with a line range, to clang-format, and
then replaces what was changed. This is more in line with the vim and
Visual Studio integration. It uses clang-format's replacements XML to
apply code formatting.
Add option to use system clang-format, if it's in the path.

This is useful to install newer versions of clang-format from clang
releases or trunk, without having to update the binary bundled with this
plugin.