Introduce default executor on ConnectionFactory

This makes it easier to share an executor between
connections.

Note that we do not have any default shared executor
because it would be impossible to know when/if it is
safe to shut it down. Even with reference counting
for connections using it in place, it is possible
that all connections produced by a factory
were closed only to create some new ones later.
Basic tests for shared executors
Instantiate a new executor if none provided
Extract methods
Leave a note on executor shutdown responsibility
Rename methods
Refactor tests
One more test case for Connection#willShutDownConsumerExecutor
Make it say "Executor service" in the message, too
Remove constructor that's no longer used
Remove a method that's no longer used
Inline
Remove a method that's no longer used
Make sharedExecutor private

For consistency with other fields.
Get rid of a validation method that's no longer relevant
Move private executor predicate to ConsumerWorkService, delegate to it
Inline, reduce distance from default.
Merge bug25833