Change how branding works to avoid allocations

- An initial "noBrands" field on each Pyret value
- When branding, prototype-inherit and then extend with the new brand
- In equality testing, count on a low number of brands being there in a for-in loop