After looking at #1288658: user bundles I would like to submit this patch which hopefully will allow for users to be turned into entities that support multiple bundles. I believe this is currently impossible within Drupal 7 core.
In the current Drupal 7 code, if an entity is declared as having multiple bundles, the entity_extract_ids() function will throw an EntityMalformedException if the entity is passed in without the bundle name explicitly declared.
The result is that Drupal core's handling of the user module means that the only possible outcome is to throw this exception.
Consider a contrib module has been added which uses hook_entity_info_alter() to add a 'bundle' key to the users table, allowing each user account to designate a specific "user type" bundle.
Now consider visiting user/register which will go through the user_register_form() function. This will then call entity_extract_ids() with an entity that has no explicit bundle set, since the user module is not 'bundle aware'. The exception is triggered because, now the contrib module has allowed the user entity to have multiple bundles, and the user entity has no bundle set.
In my proposed solution I make the assumption that for entities with only one bundle, the bundle name is always the same as the entity name. For example, by default, the user entity has exactly one bundle called user. I believe this to be the case but if my belief is incorrect, it might affect the solution.
The patch replaces the exception with the assumption that the bundle name is the same as the entity name. That is, as in our example, if a user entity is passed to entity_extract_ids() with no bundle information, we will assume that the bundle name is 'user', even if there are multiple bundles for this entity.
This will allow 'bundle-unaware' modules that handle entities to avoid failure if they are later adapted by contrib modules to have multiple bundles.