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.
use a consistently named "name" field when we report error in username
increase coverage in chef_users and ensure all tests pass

* add new tests for additional validation rules
* remove admin-related tests
* make some helper functions for common object creation in tests
* ensure that the validation errors are what we think they are
  by specifying field name in error as part of #ej_invalid{}

Still room to improve, coverage at 67% from ~50.
Merge pull request #64 from opscode/mp/user-endpoint

Note that compatible chef_objects is now under branch "mp/users-lock", which erchef has been configured to use for OSC.