Bulletproofing of role resolution for Create args

Single-member roles will use the first element on an array if an array
is given and an object is checked for before calling ->id blindly on a
value that may be undef.  These changes make it easier for programmatic
generation of Create args and has the new REST API as motivation.
Merge branch '4.2/record-role-resolution-args' into 4.2-trunk