(TK-3) Add support for multiple servers

Add support for multiple servers to the jetty9 webservice. Previously, a user would define the webserver key in the configuration file as a map of configuration data, which would be used to configure a single Jetty9 server. This syntax is still valid. However, now the user can also define the webserver key as a nested map, where each key is the id of a server and each value is a map of configuration data (of the same form as before). With this information, the Jetty9 service will now initialize, start-up, and shutdown multiple servers if so specified by the user.
This is a tiny bit weird in that it will only work if `server-id` evaluates to something that can be called as a function; in other words, it works fine as long as `server-id` is a keyword, but if it were ever a string then this would cause an error.  (`("foo" {})` doesn't work.)  Since users can call these functions from their code, they could make a mistake and pass in a string there instead of a keyword.

It might be nice to push some of this logic into `core` for the reasons mentioned above, and also because you could use schema to enforce that `server-id` was a keyword if you wanted to?  That might also allow you to refactor a bit of this let block into a reusable function, since some of this logic seems to get repeated a few places in this file?

Lastly, I still think this line and the following line could be combined into something like:

```clj
(get-in (service-context this) [:jetty9-servers server-id :state])
```
And that'd be a little more readable.