Implements check and pattern matching support for struct patterns. This PR implements complete patterns, and leaves `_` field handling for future work.