ofproto: Break subrules out of "struct rule" into new "struct facet".
Until now, there have been three types of struct rule:
- An OpenFlow rule with wildcards, that may have exact-match "subrules".
- An OpenFlow rule without wildcards.
- A subrule that has no wildcards.
This is at best confusing. At worst, it leads to bugs.
This commit changes the situation to:
- "struct rule" represents an OpenFlow rule, with or without wildcards.
- "struct facet" is what was called a subrule before.
This commit is intended to be more or less the minimal patch necessary to
implement this change. Followup commits will further improve the code.