Changed the Env.parse to note all missing values

This basically required upgrading the semantics from

    IO (Either String a)

to

    IO (Either [String] a)

It was literally a 2-second change to make these new semantics type-check,
but it will require more work to make the system actually capture all of
the missing values.
Added inst Applicative Env.Parser/updated tests/ex

The first step to fixing the problem is noting that the Applicative
interface is sufficient for all of the problems we've encountered
so far. This might not be the case for ALL problems, as Applicative
is strictly weaker than Monad, but we haven't been using that power.

In this commit Applicative is implemented USING Monad---another
indication that Monad is more powerful than Applicative. This lets us
produce a fully type-checking and running example... but of course
the test still fails---it's effectively nothing but a syntactic change
we've executed as of this point.

The meat of the change will have to occur when we start to abuse some
amount of analysis we can achieve with Applicative due to it demanding
less power.