(Re)generate the build version when preparing a release.

If hack/build-go.sh has never been run before release/build-release.sh
the subsequent build will fail. Also, when preparing builds the
version should be forced to be up to date with the current checkout.
Make storage.Delete return *api.Status instead of api.Status
as apiserver.APIServer.finishReq expects.

This solves the warning in finishReq:
"programmer error: use *api.Status as a result, not api.Status."
Prepare for external scheduler

1. Change names of Pod statuses (Waiting, Running, Terminated).
2. Store assigned host in etcd.
3. Change pod key to /registry/pods/<podid>. Container location remains
   the same (/registry/hosts/<machine>/kublet).
New scheduler API

This commit adds a Binding object. The idea is that schedulers can write
these to cause pods to be asssigned to hosts. I'll provide an implementation
along with a rudimentary scheduler plugin.

This continues k8s' tradition of phrasing all APIs as RESTful handlers.
Use IntOrString for HTTP health check ports

Clean up code to be more testable.  Add test cases for named and numeric
ports in HTTP health checks.  Improve tests.
Use IntOrString for TCP health check ports

Clean up code to be more testable.  Add test cases for named and numeric
ports in TCP health checks.  Improve tests.
Move HTTP code out of health.go

Put it with the related HTTP code.
Split health_check.go into smaller parts.

Distinct files for core, http, and tcp.
Reduce and comment exports
Add debugging info printing to etcd fake

And make tests pass again.
Use DesiredState rather than CurrentState for Host.
Merge pull request #592 from lavalamp/schedulerApi

Proposal for scheduler API
Merge pull request #557 from lavalamp/podLocation

Prepare for external scheduler
Correct confusing comment.
Merge pull request #854 from lavalamp/fix

Correct confusing comment.
Merge pull request #838 from thockin/roadmap

Proposed roadmap to 1.0
Merge pull request #847 from thockin/health

Use IntOrString for health checks
Merge pull request #839 from yugui/fix/api-status

Make storage.Delete return *api.Status instead of api.Status
Breakup the registry package into separate packages.

Currently all registry implementations live in a single package,
which makes it bit harder to maintain. The different registry
implementations do not follow the same coding style and naming
conventions, which makes the code harder to read.

Breakup the registry package into smaller packages based on
the registry implementation. Refactor the registry packages
to follow a similar coding style and naming convention.

This patch does not introduce any changes in behavior.
Make proxy/config/etcd.go less verbose when etcd is not available