add an option to l3.setValue for finding out if it succeeded
first cut at match-when bootstrap functions

the underlying pattern matching functions need to be more forgiving
about mismatches before this'll work very well