Refactor Property grammar, parsing and interface

Factor Property and Spirit Grammar implementations into dedicated
PropertyGrammar header. Factor actual parsing into frontend
PropertyParser header, plus associated implementation file.

Refactor datatype-grammar application to just use PropertyParser
frontend. This hides the detail of the grammar and parsing so
that extra parsers (e.g. from streams) can be added, and also
to enable unit testing.
Refactor Property class into its own header