determine whether semicolon insertion appropriate on '(' insertion

This PR brings 'smarter' `(` insertion to the C++ mode -- if the user inserts a `(` and we can ascertain that they are making a function call (rather than defining a function), then we automatically insert  `();` rather than just `()`.