Align api to reflect new_record usage
Bring chef_user in line with EC requirements

* add pubkey_version and serialized_object to user record
* allow chef_user to have username specified as ``name`` or ``username``
  for consistency with legacy EC
* chef_user is a chef_object
* simplify validation and ejson construction.  use whitelist of
  accepted fields for serialization
* make display_name and email required and add email validation
* perform proper merge of serialized_object on update .
* silently  drop any fields submitted that we don't recognize
* chef_user:assemble_ejson should only ever include public key,
  not certifcate.
* capture but ignore the ``admin`` and external-auth fields.
* make chef-user accept the standardized form of ``update_from_ejson``,
  which does not include an additional password tuple.  Caller is
  responsible for making sure object record is correct.