Differentiate EOF blocks and the terminal block
The EOF flag was used for two different things:
1. for the terminal block
2. for blocks that can't be read from disk (cf. the check in
hed_is_inner_virtual)
This is wrong. There can always be only one terminal block, but there
can be multiple virtual blocks beyond EOF, e.g. when you go beyond EOF
and modify some bytes.
So, the new semantic is:
1. HED_BLOCK_EOF is given to all blocks that are past file EOF (and
hence cannot be devirtualized).
2. HED_BLOCK_TERMINAL is given only to one terminating block which is
always last in the list and serves as a termination mark for list
walks (and also for positioning the cursor beyond logical EOF).