Enforce valid hostnames (minus uppercase) for app IDs

Marathon’s modified hostnames allow digits, dashes, dots, and lowercase
letters. Normal hostnames allow uppercase letters and are case
insensitive, but that would likely be awkward in Marathon's app naming.
Allow assets to be built from any directory.