Add basic support for primary block attributes

Includes changes to some of the internals of parsing to support this, and
alterations to blocks (just the inclusion of a new Block attribute,
primary_attr).
Loses code coverage.
Refactored parsing to be simpler

In light of the changes for primary attribute support, the old way of handling
the parsing (post-tokenization) was not well built and needed a rewrite.
Recover test coverage for Primary Attribute blocks

Adds a couple of tests to ensure that use of Primary Attribute blocks does not
break tokenization.
Improve parsing tests on primary_attr blocks

Increases the number and kind of tests run on tokenizing and parsing Primary
Attribute blocks.
Update README to include 2.3.0 changelog

Includes mention of Primary Attribute blocks. Scratches that off of the Feature
list.
Merge branch 'feature/block-primary-attr' into dev