Finish off architecture document
Simplify cloning

I have no idea what I was thinking before.  A clone is just copying a
struct and that's the default operation since structs are values not
pointers.  Sigh.  This seems to have improved performance on the naive
reverse benchmark.  The others are harder to tell.

    True                10865 ns/op
    Append             301291 ns/op
    Maplist            785723 ns/op
    NaiveReverse    106792500 ns/op
    Read               113979 ns/op