* Move configuration from lib/service to lib/service/servicecfg
The new servicecfg package will hold only configuration for services.
This will allow other packages (like tctl and tsh) to depend on
servicecfg without pulling in all of lib/service (which has a number
of platform-specific details).
This is the first step towards being able to build tctl for Windows.
* Move PAM and BPF config into servicecfg
This breaks a compile-time dependency on BPF/PAM for tctl.
This commit ensures that `tctl desktops ls --format json|yaml` outputs a
list of `windows_desktop` resources. Note that `tctl desktops ls`
displays additional information that is only present in the
`windows_desktop_service`.
With `tctl windows_desktops ls --format json` now we get something like the
following:
```json
[
{
"kind": "windows_desktop",
"version": "v3",
"metadata": {
...
},
"spec": {
...
}
},
...
]
```
`tctl windows_desktops ls --format text` now also displays the same information
as `tctl get windows_desktop --format text` (removing all the info about the
`windows_desktop_service`):
```bash
❯ tctl get windows_desktop --format text
Name Address AD Domain Labels
--------------------------- ----------------- ----------- ------
EC2AMAZ-QME01PL-example-com 172.31.4.209:3389 example.com
❯ tctl windows_desktops ls
Name Address AD Domain Labels
--------------------------- ----------------- ----------- ------
EC2AMAZ-QME01PL-example-com 172.31.4.209:3389 example.com
```
Before this commit, users would `tctl get windows_desktop/<name>` and
`tctl desktops ls`. For consistency, `tctl windows_desktops ls` is now
the default but `tctl desktops ls` is kept as an alias for backwards
compatibility.