EXP-164. Make prepare environment Optional.

This commit modifies ModelEnvironment so that the Prepare environment
is an optional value. Changes are made to the code in various places
to accomodate this change.

When constructing a ModelEnvironment programatically, users can now
specify either None or Some(prepareEnv) for the prepare environment.
We could make this a little cleaner using default parameters on the
factory method, but the parameter ordering is a little unconducive to
that right now and I didn't want to mess with it in this change.

Reviewed by: robertchu