Only allow App ID's that are valid DNS hostnames

Turns out that we can't have App ID's that contain uppercase or anything else that's not unique in a domain name.  This PR fixes #245 by requiring lowercase app names.