Add `buffer` builtin for keeping state

The `buffer` builtin is like `fopen` of a temporary file in that it
returns a handle that can be written to and read from.  The last value
written is always the value returned by read, and buffers always start
out with a null value.
Document the `buffer` builtin