Allow hyphens in namespaces.

We have some cases using a private registry where it would be convenient to be able to use hostnames and other strings that can include "-" as namespaces. The [original discussion about the acceptable characters in namespaces](https://github.com/docker/docker/pull/663#issuecomment-18437921) seemed a bit ambivalent on whether hyphens should be accepted in namespaces, so we'd like to propose voting them in.

This won't establish precedent for namespaces that aren't valid Docker hub usernames. The Docker client [accepts underscores in namespaces](https://github.com/docker/docker/blob/c478143ec0ca8f610f7980991b9b2ba0e1160b3e/registry/registry.go#L27), even though the Docker hub (despite [documentation to the contrary](https://docs.docker.com/reference/api/docker-io_api/#user-register)) doesn't allow them in usernames. Trying to create `test_user` today returns `Wrong username format (it has to match "^[a-z0-9]{4,30}$")`.

Signed-off-by: Matthew Riley <mattdr@google.com>
How about a regex to validate and the string methods just for outputting / refining the error messages? I don't think the proposed regexp is too difficult (like [this one](http://blog.trojanhunter.com/2012/09/26/the-best-regex-to-validate-an-email-address/)). Also, having the "rule" defined in a single place seems like a less error-prone solution to me and makes the regexp reusable in other places if desired.

That said, I agree that it can be a nice touch to produce assistive error messages, but not sure "how far" this should be taken, combining them to a single message *could* work;

    Invalid namespace name. A namespace;
    - must be between 4 and 30 characters long, 
    - must start and end with a number or letter (a-z0-9)
    - can contain only [a-z0-9_-.]
    - cannot contain consecutive dots, dashes or underscores