add syntactic extractor for assignment-like trees

There are three kinds of assign-like trees:

1. Assign(lhs, rhs)                          // $lhs = $rhs
3. AssignOrNamedArg(lhs, rhs)                // $lhs = $rhs
2. Apply(Select(f, nme.update), args :+ rhs) // $f(..$args) = $rhs

New syntactic combinator unifies all of them and lets users not to think
about these implementations details.
refactor out common logic between various statSeq-s in parser

Partial functions are left outside of the call to statSeq to allow
re-use and overriding capabilities for quasiquotes.
refactor out range position utility constructors

This will help to re-use same logic for creating range positions even
if atPos isn't used to assign position to the tree.
SI-6841 SI-6657 add support for packages into quasiquotes and toolbox

In order to implement this a new parser entry point
`parseStatsOrPackages` that augments current parseStats with ability
to parse "package name { ... }" syntax.
fix minor regression in quasiquote reification

emptyValDef should always be reified as emptyValDef. After the the
introduction of SyntacticValDef this ceased to be true.
harden test case to avoid parsing failure when name is keyword