I should commit more often, details in description

Tag parsing is improved a ton.

* It's now ok to have no spaces between tags.
* It'll parse all tags and check that they're a subset of the allowed tags (so no more making up tags).
* Added tests to check for bad tags.
* Fix bad tag reporting if there was leading/trailing allowable characters.