Fixes for multi-period protected content
Created by: greg80303
ProtectionController now managed at the StreamController instead of Stream to prevent destroying key information when changing periods
Better support for preventing session creation for initialization data we have already seen
New multi-period, protected content added to sources list
Moved key system selection out of ProtectionExtensions. The parts of key system selection that apps would want to change (returning prioritized list of keys systems, etc) are still in extensions.