Implemented Write and WriteUpdate

Added options for writing to a key. The pre-existing setters (Set,
SetRaw, Add, AddRaw, Delete) are now just wrappers around Write.

Most importantly, the Persist and Indexable flags cause Write to wait
until the new value is persistently stored and/or available to be
indexed by views. (Under the hood this uses an Observe loop.)