undo abstraction over whether to parse attrs in a block

In principle, it seems like a nice idea to abstract over the two
functions that parse blocks (one with inner attrs allowed, one not).
However, the existing one wound up making things more complex than
just having two separate functions, especially after the obsolete
syntax is (will be) removed.
remove unused RESTRICT_NO_CALL_EXPRS restriction
remove unused flag to parse_local fn
parser comments
remove unused functions, fix tiny lexing bug

before this change, the parser would parse 14.a() as a method call, but
would parse 14.ø() as the floating-point number 14. followed by a function
call. This is because it was checking is_alpha, rather than ident_start,
and was therefore wrong with respect to unicode.
remove unneeded parser functions

the "looking_at_struct_literal" function (sp?) existed to distinguish
blocks from struct literals (and looked fragile as heck, too). Now that
all structs require a preceding identifier (no more structural records),
this function was unnecessary.
hard to read the implied double negative
fix for parsing x() as identifier pattern
parser comments
needs_comma was always true
parser comments
rename parse_class_item to parse_struct_decl_field

two problems with the old name: they're not called classes any more, and
the word "item" has a specific connotation in the parser
rename parse_single_class_item as well
remove obsolete semicolon from list of suggestions
rename parse_instance_var to parse_name_and_ty

the name no longer made sense. perhaps this could just be inlined.
parser comments
remove 3-line used-once function
s/parse_purity/parse_unsafety
parser comments
parser comments