Experimenting with inspecting stream contents as it is read.
Evolved CallableFilter into CallableDecorator

... to add another method that decorates UserRequest
Doc improvement
Added a test case
Doc improvements
Merge 2.45 into SECURITY-144
doc improvement
Adding Decorator after a channel is created can be too late

... as the slave could have already sent us Callables. To really ensure every Callable gets decorated, we need to have them in ChannelBuilder
Added @since.
Typo.
Fixed Javadoc to make it clear that you delegate to stem, not op.
Introducing the mechanism to verify that the Callables we are getting is legitimate.

This change introduces Role, which designates the part one side plays in the overall protocol (such as "client" or "server".)
Callable and other Callable-like classes (like FileCallable seen in Jenkins) should implement this RoleSensitive interface
to declare the intended place the Callables run.

This information is then used as a basis for decision making to allow/refuse Callables. RoleChecker does this, and it gets
installed as a CallableDecorator.

This change also makes a bold move to have Callable implement the newly added RoleSensitive, breaking source compatibility.
Fortunately, this change doesn't affect binary compatibility, and the care is taken to warn the caller that it might see
AbstractMethodError.

This change forces each Callable implementation to think about where it can be run, which provides static check and helps
those users of this library that wants to enforce this role mechanism (such as Jenkins.) It is indeed a nuisance for users
who have symmetric protocol (for example, the most of unit tests in this library), but the trade-off is judged positive
as the most critical user of this library (Jenkins) has an asymmetric protocol.
Made all Callables implement the getRecipients() method.

See the previous commit for the context and the discussion of this change.
This commit is more or less just the implementation details
Allow controlling classloading and Callable restriction separately
CallableDecorator is newly added, so belongs in the package for new classes.
Unused constructor.
@stephenc suggests equals/hashCode for Role.
(Not following suggestion to do writeReplace.)
I am also making it final. Basically it is like an extensible enum.
More consistent naming convention.
Revert "Unused constructor."

This reverts commit 3bfbe5c9aeb28e1ed11f6ee50fa8b088fa4e9ade.
Apparently it was used after all.
Make sure new APIs are marked with @since.