PUT may now choose whether to store or update

This change introduces a PutAction, which determines what a PUT request
should attempt to do.  It picks a reasonable default depending on what
functionality is available: if both store and update are implemented, by
default it will try to update, and then store.  These changes disable
PATCH when there the diff type is the same as the resource, as that
implies that only complete changes can be made (by PUT).  The exists is
no longer required, and has been removed.