feat(scheduling): simple method of running a unit file

* Poll the /coreos.com/coreinit/schedule/ namespace in etcd for systemd unit files
* When a new unit file appears, write it out to the local filesystem and
  remove the key from etcd
refactor(agent): remove agent code from registry.go

* Create a new agent.go file that contains all of the agent-like behavior
* agent.go is still in the registry package
refactor(registry): Move etcd-access to Registry

Serialization of data into etcd now lives in Registry
chore(imports): alphabetize import order
chore(logging): Use the builtin log package

Several log lines had to change, as they were simply logging
duplicate timestamps.
refactor(registry): Move Address code to Machine

The logic for inspecting and parsing a system's interfaces into Addr objects
now lives in Machine.GetAddresses
chore(agent): Add some simple documentation of Agent
refactor(*): Break apart files into packages
refactor(agent): Remove remaining etcd access from Agent
refactor(agent): Expand log statements
chore(registry): drop irrelevant comment
refactor(registry): update etcd paths
refactor(scheduling): Major refactor to move to the new scheduling model

* Users can control what services should be running on a given machine
  through the /coreos.com/coreinit/machines/<machine bootid>/schedule/
  endpoint. Simply create a new key (i.e. nginx.service) where the value
  is a valid systemd Unit file. Delete this key if the service should
  be stopped.
* coreinit reports the current states of the necessary services at the
  /coreos.com/coreinit/machines/<machine bootid>/units/ endpoint. The
  keys should reflect what is in the schedule/ directory, while the
  values will be the current state of the service reported by systemd.
refactor(*): Drop struct name from factories

NewAgent, NewRegistry and NewMachine each became New
Merge pull request #5 from bcwaldon/run-unit

alpha approach to scheduling services through coreinit