Actions watcher redux

Make sure Actions queued before a watcher starts are picked up when the watcher does start.

Also slight refactoring to prepare for Actions being queued on Services as well as Units
So inside of names itself it certainly calls these things "id" and *not* "name". Stuff like:
func ParseTag(tag string) (Tag, error) {
        kind, id, err := splitTag(tag)
...
                id = unitTagSuffixToId(id)
                if !IsUnit(id) {
                        return nil, invalidTagError(tag, kind)
                }
                return NewUnitTag(id), nil

We can run it by someone else, and it may be by design that we're using the Name nomenclature instead of the Id one, but I do want us to try to be consistent as much as we can.