(QENG-431) expanded and improved role support in beaker - reapply

This re-applies the reverted role support for beaker.
Speaking of information about roles. Up till now roles could have a "-" in them. And I believe `define_method` will define a method with special characters. So they will create a method with a "-" in it. However it will be syntactically un-callable without resorting to `send`. That's a weird edge case that we might want to warn about, maybe?