Remove useless EnvironmentAdapter

This hasn't been doing anything since a2b0298bd38872404a00bf10dbbad87b96f4b7c8.
Remove the "program" idea from tests

Our parser and evaluator don't have "programs" (sequences of multiple
S-expressions), and the impedance mismatch is making everything more
complicated.
Remove unused ProgramAdapter
Detect S-expressions by just parsing them

This assumes that the parser will fail (raise an exception or return
nil) if the string isn't a valid S-expression, which is currently the
case.
Call #array instead of #s_expressions
Make List#array public

We need to be able to call it from the tests, and making it public means
the adapter proxies it automatically.
Check class in be_an_atom and be_a_list matchers

This decouples the "is this an atom/list?" question from decisions
around the design of predicates on Atom/List instances (i.e. whether
they should return Ruby or Scheme booleans).
Remove unused #atom? and #list? from SExpressionAdapter
Remove useless SExpressionAdapter
Remove useless EvaluatorAdapter
Turn parser results into an AST in ParseHelper

It's fair enough to allow the parser to return a concrete syntax tree,
and for the helper to be responsible for turning that into an AST.
Remove useless ParserAdapter
Remove test adapters

These were convenient to begin with, but as we've moved into chapter two
they've started causing more trouble than they're worth. To keep things
simple, and to keep us focused on fixing the implementation/tests rather
than fixing the adapters, I've just updated the tests to match the API
that's actually provided by the implementation, which means we don't
need adapters any more.