Add an Event class

Now we can store etags/hrefs/contents without messing with associative arrays
Use the new Event class for all client methods

Events are returned as Event objects, and delete/put operations require an
Event object too.