Add attribute tag support, including with a custom attribute delimiter

Our branches have a number of common commits, but just these five changed files add attribute support.
I had to move the storage of the options hash onto the parser object (to make it accessible), but that doesn't otherwise affect the logic.