Added proper symlink support to tar/untar

Symlinks where being treated as regular files and copies
of the files where stored instead of links for files and
broken regular files with no content instead of folders.
Now Lstat is being used to read the file details, which
does not follow symlinks but instead returns the link
details, which allows to add them as symlinks to the tar.
Merge branch 'master' of https://github.com/juju/utils
Make tilde expansion work on Windows
apt: don't obscure unexpected type errors

Errors of unexpected type are being obscured,
and only their type being logged. This change
is to just annotate the error with its type.

We also add some testing of the apt-get install
retry logic. It's still not perfect, but it's
better.
fixed tests on Windows
Fixed outdated import
Merge pull request #18 from perrito666/add_symlinks_support

Added proper symlink support to tar/untar
Add a set implementation for the names.Tag type
set/tags: update tests per review comments
utils/set: make interfaces private
set/tags: more test updates
utils/set: clean up Tags tests
Added cross platform Uptime() function
Merge pull request #35 from wwitzel3/ww3-tag-set

Add a set implementation for the names.Tag type
Merge update to use gopkg.in/check.v1
go fmt fixup
Merge pull request #27 from gabriel-samfira/testing

Make tilde expansion work on Windows
Merge pull request #39 from gabriel-samfira/uptime

Added cross platform Uptime() function
Merge pull request #28 from axw/apt-retry-errors

apt: don't obscure unexpected type errors
Upcast uptime from syscall

On arm and i386 the uptime value is int32 rather than int64,
so upcast to satify the function return value.