Features: customer update operation

This is a replacement for #56, with merge conflicts resolved.

Fixes #56.