Make table footer expandable

The expandable footer format:
 - versioned metadata (length >= 36 bytes)
 - length of versioned metadata (32 bits)
 - table magic number (64 bits)

The plain and block based table magic numbers have been changed to bootstrap
this change. Footer::DecodeFrom() contains a code path to support the legacy
footer format (using the prior magic numbers for detection).

Version 1 of the footer metadata contains:
 - version (1)
 - checksum type
 - metaindex handle
 - index handle
Use Footer to select the checksum type

Require passing Footer into functions which need to interpret BlockData