Use `with' for functional updates

After getting uneasy with the arity based updates, and after community
consultation, I've decided to move to a with_x or with(x: ...) style of
update methods. See https://twitter.com/plexus/status/542315995952852993
and https://gist.github.com/plexus/42c6c9c63212182ee440 for details.

This will require quite some change though, but it will also make things
much cleaner eventually, especially regarding Configurable and DSL. This
commit lays the first steps for moving in that direction.

Also deprecated Resource#update_attributes in favor of
merge_attributes. Update, like set, sounds too much like it
mutates. This should mostly be an internal API but leaving the alias for
karma points.