I like the idea of including required parameters as first-level citizens rather than being buried in a map like in @KevinCorcoran's Option 2 -- but only when you have a fairly small number of them.  Feels like we have enough here that at least keeping the required vs non-required ones together in a subordinate map is reasonable.

I think the only reason we did an optional param for the `add-servlet-handler` was that we didn't already have a map-type argument for the existing options and didn't want to break the existing signature when adding the init param capability.

I suppose I'd have a slight preference for @KevinCorcoran's Option 1 but not sure if the effort to rework it now is worthwhile.