compiler: Support reducing memq/memv/member/cond

- Split ot the eqv?/equal? code from EquivalenceProcReducer to a new
  reducer.LiteralEqv helper object

- Add generic "findMember" helper function in ListProcReducer to support
  general (memq) type procedures. Because these procedures return the
  list tail we have to be extremely careful not to duplicate lists which
  can cause programmer-visible differences. For that reason only inline
  literal lists are searched at the moment.

- Tweak ReduceApplication to special case directly returning a single
  argument by replacing in the argument's operation. This shouldn't
  create functionally different code but produces cleaner expression
  trees for unit tests.

- Add unit tests for (memq), (member) and (cond). (eqv?) and (eq?) are
  the same in Llambda so a separate (memv) test isn't required. (cond)
  isn't explicitly reduced because it's a macro but the reduction of its
  expanded code was the motivation for this change.