Role chaining

@alexander-daniel  Okay we have working role switching from within roles. This should allow more flexibility making more complex behaviours.
To maintain current API I make args an array if its just a scalar