Refactor GCD calculation and variable names

Extracted function `GCDOfMany`
Normalize quotes in exists() to double quotes

Now all `exists()` calls use double quotes for the variable name, for consistency.
Replace exists() && value checks with get()

This is a shorter way to write the same thing.
Split body of DetectIndent() into two sections

Now 'expandtab' and the indent width are set separately. This is easier to read and better-factored. It also fixes a bug where the indent width of the file was not detected if tabs were detected in the file.

This refactoring has also revealed a possibly-redundant option and room for further refactoring, and I have noted those possibilities for change in comments.
Document comment-detection functions better

Improve the names of the comment-detection functions so that fewer comments are needed, and explain better in the comment that still exists.