Require '{', ';', or '=' after a function type.

Fixes part of SF#532.
Check the 'return' type for a function type.
Do a better job of skipping B:: in "A(B::*C)();"