When detecting an attribute, check that all parameters are constants.
Small refactoring, move OPTreeJITCandidateFinder definition to the top of the file.
Only check for JIT candidates after handling or excluding an attributes call.
Remove std:: prefix from implementation file, since there is an "using std".
Remove unused default constructors without an implementation.
Remove unused variable index and repurpose the field as a variable id.
Add a catch-all die to catch potential unhandled node types.
Add a separate AST class for the variable declaration.

The commit also adds a n intermediate AST::Identifier class, empty
for now, it's going to contain the Perl variable kind (scalar, array,
typeglob, ...) and also used as base class for globals.
Do not JIT a root NullOptree tree.
Actually store the parsed type in the variable declaration.

Also refactors the code that recognizes the attribute call optree
to a separate function.
No change, just removed a bunch of %name directives in XS++.
Declare XS++ dependency in dist.ini.
Export all type constants.
Add a get_kids() accessor to top level Term class.

It's useful to have a generic way to traverse the AST
regardless of the actual node type.
Expose AST type annotations to Perl.
Change the interface to value_type exposed to Perl code.

Wrap the member variable in a pair of accessor methods, this avoids
the problem of code accessing the field of a Variable object
rather than using the value from the VariableDeclaration object.
Start adding tests for type annotations.
Fixed handling of attribute calls where we did not recognize any type.
Remove the global PJ_cur_cv variable and -pj_get_sv_from_svop.

Setting PL_comppad/PL_curpad on entry exit avoids reimplementing
core functionality and is safer (a macro/function using the wrong
pad is nasty to debug, and likely does not fail all the time).
Try to avoid runtime attribute overhead when not running under JIT.

Using a custom peephole optimizer is more reliable, but for now
this gives the correct behaviour.  The tests only test user-visible
behaviour, hence should not need changes if/when switching to the
custom peephole.