replace compose_into with consume_role
restructure this a bit

this doesn't fix anything yet, but provides the groundwork
add a passing test
make this all go through FINALIZE

consume_role should probably not even be public api (you should just use
add_role and FINALIZE), but we'll see
methods also need to track original ids for conflict checking
fix the multiple role conflict algorithm
remove consume_role as public api

you should just be able to call add_role and then FINALIZE instead, or
use mop::util::apply_all_roles
no need to do this if we have no roles
role composition changes break this