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.
On Wed, Jul 9, 2014 at 2:53 PM, John Weldon <notifications@github.com>
wrote:

> In agent/agent_test.go:
>
> > @@ -370,8 +373,8 @@ func (*suite) TestAttributes(c *gc.C) {
> >  	c.Assert(err, gc.IsNil)
> >  	c.Assert(conf.DataDir(), gc.Equals, "/data/dir")
> >  	c.Assert(conf.SystemIdentityPath(), gc.Equals, "/data/dir/system-identity")
> > -	c.Assert(conf.Tag(), gc.Equals, "omg")
> > -	c.Assert(conf.Dir(), gc.Equals, "/data/dir/agents/omg")
> > +	c.Assert(conf.Tag(), gc.Equals, "user-omg")
> > +	c.Assert(conf.Dir(), gc.Equals, "/data/dir/agents/user-omg")
>
> I guess that's explicitly accounted for... disregard previous comment :)
>
This bit was a bit grotty. "omg" isn't a valid tag, it doesn't have a kind,
so as we go through and destringify all this logic where strings were just
passed through unmolested some fixtures break.


> —
> Reply to this email directly or view it on GitHub
> <https://github.com/juju/juju/pull/267/files#r14693498>.
>