Handle some edge-cases with space detection.

 - * and & are ambiguous operators. If they come directly before
   a paren, then ignore them as they might be dereferencing or
   referencing the result of that expression
 - Ignore ] when followed by ( as it may be a lambda capture declaration

Simplify the overall architecture of space detection checking. We now
just ignore "enclosing" parameters rather than trying to count them.