Handle compressed tars in ApplyLayer

When pulling from a registry we get a compressed tar archive, so
we need to wrap the stream in the right kind of compress reader.

Unfortunately go doesn't have an Xz decompression method, but I
don't think any docker layers use that atm anyway.
archive: Re-add XZ compression support

This shells out to the xz binary to support .tar.xz layers, as
there is no compression/xz support in go.
Merge pull request #3243 from alexlarsson/compressed-tar

Handle compressed tars in ApplyLayer