prevent primary key collisions where multiple primary keys, make a recast operation on the object

Added Comments too
Recast & use get_primary_key_index()
get_primary_key_index() implementation for versioned objects

Pretty much just skips the `version` key
user_active_record::current() implementation

Added comments