Add support for seeking to arbitrary headers.

Before, we're not able to seek to arbitrary files in the archive. We had to scan from beginning like:

```OpenArchive()
while (GetNextHeader(&header) {
  if (header.name == requested_file_name)
    break;
}
// We have our compressed file!
```
It is very slow for archives with 10 000+ files. To fix the performance bottleneck, this patch introduces a SeekToHeader like method which allows to call:

```SeekToHeader(10);
GetNextHeader(&header);
// We have our compressed file!```
Good question. I basically followed the style from archive_read_next_header2. IIUC this code basically changes state to another one. For other states it ignores them. But if the state is wrong, then following calls to libarchive methods would fail on archive_check_magic.