Restructured files; doc tidy.¹

assert: moved to module 'error'.
collections: renamed module to 'collection'.
io: renamed file_io to file_stream and memory_io to memory_stream.

1: It had become difficult to tell what module files were in.
The new structure is `module/interface.(hpp|cpp)`. A lot of files
had been using the module as a prefix, followed by an underscore.
This is still undesirable, especially with so many large modules;
the prefix form is harder to read. Implementation files have been
moved to within the module: `module/interface/<impl-name>.(hpp|ipp)`.
This is easier to maintain & locate than having a separate impl
tree.