archive/zip: handle trailing data after the end of directory header

The spec doesn't explicitly say that trailing data is okay, but a lot
of people do this and most unzippers will handle it just fine. In any
case, this makes the package more useful, and led me to make the
directory parsing code marginally more robust.

Fixes issue 5228.

R=golang-dev, dsymonds
CC=golang-dev
https://codereview.appspot.com/8504044