Correct errors in stream list

Encryption flag was missing for encrypted source.
Type was wrong for audio-only.
Caption example did not have captions.
Support relative path for encryption key
Support EXT-X-KEY:METHOD=NONE

Do not assume that METHOD=NONE is followed by an encryption key.
EXT-X-KEY:METHOD=NONE is a playlist attribute that means the content is not encrypted.
Normalize IV from protection header

The IV from the protection header may be less than 16 bytes long. In that case we pad it with leading zeros to make it 16 bytes. This makes the IV match the format that the decryption logic expects.

Tested with a stream using IV=1 (single byte)
http://playertest.longtailvideo.com/adaptive/oceans_aes/oceans_aes.m3u8
and some non-public local streams with 7 hex characters / 4 byte in key tag
Avoid using relative urls as cache keys

Key url may be relative and is therefore not guaranteed to be unique. This can lead to erroneous cache hits.
Use the resolved absolute key url as cache key instead.
Correctly set minimum Android API requirement to 16, as code uses field introduced in version 16
Merge branch 'hls-sync' into hls-dev