Proof of concept: make servlet/filter pipeline more extensible

 * Extract common code into abstract base classes
 * Expose selected interfaces to support external implementations
 * Rebase default implementations to extend the abstract classes

Note: while this patch is marked as a "proof of concept" for general review/comment, we have been successfully using it in production to support alternative mechanisms for finding servlets and filters.