etcd: refactor config

- Explicitly specify all of the valid options for etcd
- Remove the default name generation (ETCD_NAME is set by its unit file now)
- Seperate the etcd config from Units()
- Remove support for DISCOVERY_URL
- Add YAML tags for the fields
fleet: refactor config

- Explicitly specify all of the valid options for fleet
- Seperate the config from Units()
- Add YAML tags for the fields
oem: refactor the config

- Seperate the config from File()
- Add YAML tags for the fields
update: refactor config

- Explicitly specify all of the valid options for Update
- Seperate the config from File() and Units()
- Add YAML tags for the fields
unit: refactor config

- Seperate the config from Destination()
- Add YAML tags for the fields
file: refactor config

- Seperate the config from Permissions()
- Add YAML tags for the fields
user: move User into config package

- Add YAML tags for the fields
cloudconfig: refactor config

- Move CloudConfig into config package
- Add YAML tags to CloudConfig
add validator
flags: add validate flag

This will allow the user to run a standalone validation.