debug_constraints: added TOGO_CONSTRAIN_COMPARABLE.
utility: changed min() and max() to use TOGO_CONSTRAIN_COMPARABLE.¹

1: No reason they shouldn't be able to work on pointers.
utility: added clamp().
io: added state functiosn to IOStatus.
io: split stream interfaces up to aid composition.

io: moved status function from IReader and IWriter to IStreamBase.
io: moved seek functions from IReader and IWriter to IStreamSeekable.

file_io: updated interface inheritance; simplified status assignment.
test/io: moved file_io tests to test/io/common.hpp.
memory_io: new class: MemoryStream; added test.
test/io/common: 0-fill test state in test_reader().¹

1: To ensure the state is actually changing by the IO operations.