Refactor ActionTag to expose a UnitTag() method.

Internalize logic for extracting a UnitTag from an ActionTag, so that internal parsing details of an actionId don't need to be visible outside the ActionTag.

Refactor UnitTag slightly to make unitName parsing code accessible to ActionTag within the names package.

Clarify that ActionId's, until further notice, only have UnitName prefixes (not Services for now)

Improve tests to validate the changes made in this PR
I migth be wrong here but UnitTag seems to do the same as:
```
parts, ok := parseActionId(t.id)
return parts.Unit, ok
```
You don't seem to be using the actionIdParts struct anywere else, why not just return Unit? seems like what you need is a combination of both that does:
```
 (t ActionTag) ExtractUnitTag()(UnitTag, book) {}
```