Do not get into a 500 state when a bad app registers

Previously, the DataCenterInfo was not effectively "validated" until read
time, which meant that a malicious (or simply badly coded) app could take the
Eureka cluster offline by specifying a dataCenterName that wasn't one of
Amazon, MyOwn, or Netflix.  Move the validation code to write time by doing
the conversion to DataCenterInfo.Name as part of the deserialization process.