mxfdec: Break out parts of mxf_read_header() into separate functions

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
mxfdec: Parse PreviousPartition in mxf_seek_to_previous_partition()

Without this patch the demuxer can get stuck in a loop if PreviousPartition
points somewhere where there's no PartitionPack, or if klv_read_packet() syncs
back up to the current partition.

This should fix Ticket3278 properly and unbreak Ticket4040.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Revert "avformat/mxfdec: detect loops during header parsing"

This reverts commit 1c010fd035c1a14dc73827b84f21f593e969a5d6.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
mxfdec: Merge last_partition and footer_partition

FooterPartition offset specified in RIP takes precedence over any value written
in PartitionPacks. This fixes the same issue f06f6da tries to fix without
introducing an extra variable.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
mxfdec: Tighten RIP length bounds in mxf_read_random_index_pack()

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>