Only write to etcd if values have changed

This prevents certain loops from writing data to etcd every few
seconds (when data hasn't changed).
Merge pull request #895 from smarterclayton/only_write_when_value_changes

Only write to etcd if values have changed