Instantiate bool version of plist::get<T>
Code style changes
Refactor grammar setup

A grammar_t instance now deep-copies potential grammars it includes and each call to parse_grammar() returns a new unique instance.

The latter allows mutating the grammar (by the parser) and the former ensures that grammars are not left with expired pointers (to other grammars) when bundle items are updated.
Parser no longer need to handle include of ‘$base’
Refactor grammar_t implementation
Make injection grammars part of grammar_t
Avoid using std::shared_ptr in parser

We can safely work with pointers since grammar_t now retain all rules involved in parsing the document.