Add Variant::emplaceWithFallback method

The new method is used to implement the Maybe class template. The method
can be called even if the contained types are not no-throw move-
constructible.
Add Maybe template class
Include WordComponentParser.hh in WordParserImpl.hh

To avoid compilation error due to incomplete type.
Add locale to parser::Environment

The locale is mainly used to define character type categories and
string-number conversion.
Make Predicate argument Environment const

A predicate should not modify the argument environment, so it should be
const.
Add isTokenDelimiter function
WIP Add AssignmentParserImpl template class

TODO: split addition of AssignmentParser from this commit
squash! WIP Add AssignmentParserImpl template class
Add isVariableNameChar function