Move towards client-side UUID generation for EventSearches.

The main reason is that extracting an ID from a server payload is more
fiddly work than just stating "oh, we have nothing to read back".

This commit is (a lot) more code, but to me it feels cleaner.

Along with this change, also unified EventSearch create and update,
since they're pretty much the same thing as far as we're concerned.
PUT a search record to the backend.