Pass the right arguments to EFI_PXE_BASE_CODE_TFTP_READ_FILE

A wrong pointer was being passed to EFI_PXE_BASE_CODE_TFTP_READ_FILE,
preventing us from getting the file size back from the tftp call, ensuring
that we don't have enough information to properly secureboot-validate the
retrieved image.
Build with -Werror to catch future prototype mismatches.
Fix nul termination errors in filenames passed to tftp

Fix various errors in the tftp string handling, to ensure we always have
properly nul-terminated strings.
Fix an off-by-one error

We don't need to add one because our end pointer is already off the end of
the string we want to copy.
Misc allocation cleanups
More consistent types, fewer casts
Correct limits on the length of ipv6 addresses

The maximum length of a string representation of an ipv6 address is 39
characters (8 groups of 4 hex chars, with 7 colons in between).  So don't
allocate more room than this - and more importantly, don't blindly accept
strings from the server that are longer than our buffer...
Fix a memory leak