Fix registration of SaveI command (See #8979)
Improve cancel logic of HandleI (See #8979)

Cancellations should now not overlap since a
catch block should always be present to let
previous Cancel exceptions pass through. Also,
an ERR response should always now be set on
cancellation.
Refactor DoAllI for fail-fast (See #8979)

This commit continues the previous work on improving
cancellation and makes all substeps fail-fast, so that
any error produced by a substep immediately propagates
to the client. This makes finding the issues with the
tests *much* simpler.

Tests in DoAllITest are still failing due to Security-
violations and similar.
CMD API Change! Remove session

Remove session field on all Request subclasses. It
was unused by the server and was more of a place-
holder for possible info that could be passed. Instead
the call context should be passed along with the submit
method as usual. For DoAll, which may should have multiple
contexts, a list has been added.
Attempt at fixing DoAllI with SaveI (See #8979)

This attempt tries to use explicitly setting the group
on the to save objects. It fails with a MixedGroupSecVio
since the link is left with a group=0 for some reason.
Revert "Attempt at fixing DoAllI with SaveI (See #8979)"

This reverts commit a20b1cc49ce7ddc5e918dfadf56cbf50337984a8.

Other options to be considered:

 * Set an explicit group in SaveI
 * Use the multiple contexts of DoAllI
 * Make ChgrpI -1, and use the new group on submit
Various logging changes and cleanup
Add ContextMessage.Push/Pop for interim login (See #8979)

EventHandle and CurrentDetails have long had the ability
to maintain a stack of login information, but the functionality
has been unused.

Now by publishing a ContextMessage internal services can
either add a login to the stack or pop one off. This will
allow each individual command in a DoAll to have its own
call context.

This commit also includes a refactoring of DoAllI's state
maintenance in order to have a single method ("substep")
from which login and logout can be managed.
Rename Helper.setResponse for clarity

Since setResponse was only setting the Response
value when it was still null, the method was somewhat
mis-representing its action (and in fact, even I forgot
that it was doing that).

There may be some locations where code assumes that the
setting is absolute, but further testing should find
these.
Better propagation of cancel state to DoAll (See #8979)

Includes more logging fixes and wholesale copy
from the substatus items to the DoAll status.
Make ctx a require ctor arg for DoAll (See #8979)
Refresh loaded (and stale) chgrp object (See #8979)

In order to check the details on the target object,
ChgrpI first loads the object. Then, that object is
changed at the SQL level so that Hibernate knows
nothing of the change. This causes later commands to
fail since they see the old group id.
Enable proper security filter for each subcommand (See #8979)

When a command needs to create a sub-login, it's necessary
to disable the reader *before* any changes to the context
so that the filter found by SecurityFilterHolder.choose()
will have the same name. Similarly, enabling should only
happen *after* the context has been updated.
Test fix: refresh after group add (See #8979)
Test fix: typo in query (See #8979)
Test fix: log in to target group on doChange (See #8979)
Test fix: Create new project (See #8979)
Pass call context to HandleI on initialize (See #8979)

Server-side tests were using the the HandleI(ctx) ctor,
which guaranteed a non-null call context for the cmd
execution. Client-side tests were not. This likely was
the cause of a good deal of confusion in testing. Now
the ctor argument has been removed in favor of using
the initialize() method.
Require top-level chgrp be found

If the top-level object is not moved, then a GraphException
thrown so that users do not assume that a change has been
made.
Merge branch '8979-doall-chgrp-save' into sprint16-bugfixes (Fix #8979)