Refactor package layout

Break `cloudinit` into three packages:
* `datasource` encapsulates all user-data source structs. Currently it just contains the Datasource interface and two implementations: MetadataService and LocalFile
* `system` represents local system access: writing files to disk, interacting with systemd, etc
* `initialize` contains coreos-cloudinit's business logic. This is where things happen.