Preserve canonical labels as such (#1863)

**What type of PR is this?**

Bug fix

**What package or component does this PR mostly affect?**

label

**What does this PR do? Why is it needed?**

Previously, parsing and then stringifying a label would turn
`@@canonical~name//pkg:target` into `@canonical~name//pkg:target`, which
is no longer valid.

The new field on `Label` defaults to `false` if not set, which preserves
the current behavior.

**Which issues(s) does this PR fix?**

Fixes #1862

**Other notes for review**
2 files changed