convert: update
except: simplify

Added context class.
flags: tweak
file: update
entry: update and rename
stream: tweak
tern: update
optional: fix bug
hei: update
option: re-write
except: fix bugs
option: don't use temporary data()

Under libc++ std::string::data() seems to reuse the same buffer.
tern: fix years
optional: fix years
flags: fix years
except: complete re-write
file: adjust for new except
file: tweak

Add missing header.
Adjust for new except.
convert: use new except
file: add context