state, etc: state.Info.Tag is now a names.Tag not a string

This change redefines state.Info.Tag as a names.Tag. 

This uncovered a lot of nastiness in the tests where an invalid tag was being used as a test fixture and then the incorrect result was asserted. An example of this is the agent.ConfigFile stuff which we all know _should_ write a file like fmt.Sprintf("%s-%s", tag.Kind(), tag.Id()), but the test fixtures were wrong.