Improvements to C/C++ Indentation

This adds a large set of improvements to the C/C++ indentation modes for
RStudio. A variety of heuristics are used to infer the appropriate
indentation, and we now gain a number of useful bits:

1. Vertical alignment for function arguments,
2. Automatic namespace comments for close,
3. Smart indentation / outdent for braces, 'public:', and so on,
4. Smart indentation for constructors / initialization lists,
Tidy up a bit
More tweaks, niceness
Use internal commenting method for cpp (handles trailing spaces nicely)
Port autoOutdent fixes for R modes
Fix 'doCommentUncomment' -- handle multi-char comment symbols
Prefer mode-specific indentation first
Indentation should depend on line up to cursor
Strip some tokens when getting line
Respect the R code model's vertical alignment settings
Fix up semi-colon auto insertion inference
Look for 'class' or 'struct' when inferring open brace indent
Test vertical, non-vertical alignment
Lots of fixes for block comment indentation
Refactor
Formatting, typo
Some more tweaks
Start thinking about how to handle 'naked' for, while, if, else
Better handling of open brace outdenting, 'naked' token walking
Consider quotes as 'continuation' tokens