archive: preserve hardlinks in Tar and Untar

```
benchmark             old ns/op     new ns/op     delta
BenchmarkTarUntar     5662243       5615513       -0.83%

benchmark             old MB/s     new MB/s     speedup
BenchmarkTarUntar     0.07         0.07         1.00x

benchmark             old allocs     new allocs     delta
BenchmarkTarUntar     10815          10815          +0.00%

benchmark             old bytes     new bytes     delta
BenchmarkTarUntar     520637        520216        -0.08%
```

ping @unclejack 

Signed-off-by: Vincent Batts <vbatts@redhat.com>
Ah. I was working to get a unit test to isolate the failure, rather than
going through the integration tests that fails more crypticly. I'll
uncomment it.

On Fri, Sep 26, 2014 at 4:03 PM, Erik Hollensbe <notifications@github.com>
wrote:

> In archive/archive_test.go:
>
> > @@ -63,6 +64,51 @@ func TestCmdStreamGood(t *testing.T) {
> >  	}
> >  }
> >
> > +func TestTarFiles(t *testing.T) {
> > +
> > +	// try without hardlinks
> > +	//if err := checkNoChanges(t, 1000, false); err != nil {
> > +	//t.Error(err)
> > +	//}
> > +	// try with hardlinks
>
> why is this code commented out? can we remove it if it's not going to be
> used?
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/docker/docker/pull/8046/files#r18110637>.
>