Refuse to shrink if size is too small
Refactoring rules into enum

- rule_lookup() switches on the rule and returns its string
- P() calls copy_int(rule)
- rules updated to UPPER_CASE
- freeing internal node data (allocated via copy_int())
- printing calls rule_lookup()