Move scheduler to own package.
Fix up usage and tests, split into multiple files.

Doing this in multiple commits in an attempt to preserve the file movement history.
Add crash handler bypass for testing.
Fix examples to set manifest ID and version

Part 4 in a series of changes towards data validation.
Add a review/commit hysteresis.
Merge pull request #316 from thockin/docs

Add a review/commit hysteresis.
Merge pull request #286 from lavalamp/exampleEtcd

Separate scheduler from registry
Merge pull request #314 from thockin/valid2

Fix examples to set manifest ID and version
Input validation for Kubelet

* Add some util functions for basic validation
* Spec api fields more tightly
* Break a dep from util -> api, so I can do the reverse
* Add functions to validate structures
* Call those functions when running manifests

This does not validate as it unmarshals YAML or JSON because I want to be able
to validate structures that come from other inputs without forcing them to be
YAML.

This does not handle all api structures - I am not familiar wnough with the
rest to spec them this tightly - I hope someone else can do that.
Set default values during validation

Iterate slices by index so we can set default values.  Do this for Port (the
only place where defaults are not the zero-values, so far).  Add a test case.

Delete FIXMEs for which I made a decision.
Check for duplicate IDs when launching containers.
Use %+v rather than %#v in logging manifests.

Manual testing that duplicate IDs are flagged.

Fix integration tests which failed validation

Update all examples to have version and ID.
Accept either Path or MountPath in VolumeMount

Now that we have a choke point for validation and canonicalization, we can
apply compat hacks.

Also, don't expose the various Validate functions - not useful.
Always upper-case protocol when comparing.

Don't try to handle non-specified fields outside of the validation code.  That
is what validation is for.  Still falls back on TCP in case of unknown, but
even that can be argued.
Check for conflicts in host ports.

Make sure that HostPort is unique across all containers in a pod.  We already
do a check that they are unique on the whole machine, but I hope to one day
make that less of an issue.