[WFLY-1618] / [WFLY-490] Addition of the runtime role mapping implementation.

Also Switch identity association over to use an AccessControlContext instead of ThreadLocal.
Expose Caller from OperationContext and initialise based on the currently associated Subject.
As the role mapping is happening within controller additional Principal types are created that controller can expect to present in the Subject of the authenticated user.
Added a new is-caller-in-role operation, this allows a quick check that the currently authenticated user has the expected role.
The Subject is now marked as readOnly so we do need to deal with the contents changing.
Added a test case to test various permutations of role mapping and also minor fixes for issues detected by the test.