Environment module

### Not ready to merge yet. Provided to get some feedback.

Fixes #19

This PR introduces the program environment struct (`envir::Storage`) that is filled in by the user, and serves as a source of data for program parameters.