Simplify PatIdent to contain an Ident rather than a Path

Rationale: for what appear to be historical reasons only, the PatIdent contains
a Path rather than an Ident.  This means that there are many places in the code
where an ident is artificially promoted to a path, and---much more problematically---
a bunch of elements from a path are simply thrown away, which seems like an invitation
to some really nasty bugs.

This commit replaces the Path in a PatIdent with a Path1, which just contains an ident
and a span.

Bonus! this patch should make the compiler use slightly less memory and be slightly faster, and
represents a net removal of about 100 lines of code from the repo.