Always parse macro invocations with () or [] as expressions

Parse macro invocations with parentheses or square brackets as expressions no matter the context, and require curly braces or a semicolon following the invocation to invoke a macro as a statement.

Resolves #364.

I think #208 also does this as a by-product of resolving another ambiguity with attributes.