I think we should abstract away the repeated `lambda: tabs.select_tab ...`.

```py
def _mk_tab_nav(name_to_tab):
  ...

# then instead of 
                    {
                        "cfg_settings_currentserver_server":
                        lambda: tabs.select_tab("Server"),

                        "cfg_settings_currentserver_auth":
                        lambda: tabs.select_tab("Authentication"),

                       ...}

# you'd do 
                    _mk_tab_nav({"cfg_settings_currentserver_server": "Server",
                                 "cfg_settings_currentserver_auth": "Authentication" ... }
```

Also, the names for these nav targets are getting a little unwieldy, I'm not sure there's much we can do about it.  In my original nav lib in Clojure, we had something that we don't have in Python - namespaced keywords.  Python doesn't have keywords at all (it just uses strings instead), and does not do any kind of module scoping of strings or any other literal.

Just so you know what I'm talking about, in Clojure you can write the keyword `::foo` anywhere in the namespace `cfme.configuration`, and it's basically a shortcut for `:cfme.configuration/foo`.  So you can see that if we had that in python we could write perhaps `"::defaultzone"` instead of `"cfg_settings_defaultzone"`.