Rework the architecture docs

More clearly describe the issues and trade-offs that led to the current design
in the architecture doc, and move unnecessary detail into other documents.