Add GameValidator::ValidateGameAttributes

There's now a method that checks the game attributes that are necessary
for it to be a valid definition, or a UserMessageException is thrown.

This is used during the validate step and the build step currently in
order to show the user a clearer message rather than a generic Uri
exception being thrown.