return result of match_expr from match functions
added operator== and streaming to optional_variant
reorganized and extended pattern matching test