Regex validation for tag names

Closes #91. Introduces a config option to specify a regex for allowed tag names. If any characters not matching this regex are found, then a validation error will be thrown with the details of the problem.
In my experience, getting regex to do a reverse match is a pain. I figured it'd be easier this way. I can try switching it around if you, if you'd prefer it that way.