Support passing an array to `hasRole()`

Optional second parameter controls whether all items in the array are
required, or just any item.