Snapshots(map)

(This branch is intended to stay separate from develop and only to be used for testing which requires the snapshots functionality. Only merges from develop are allowed.)

see http://gsd.uwaterloo.ca:8888/question/958/add-a-log-of-claferenvs-as-it-changes-throughout
      http://gsd.uwaterloo.ca:8888/question/951/different-ir-produced-for-explicit-this-and

This pull request has a couple things. First of all it includes the snapshots specified in the top link for i229 using the map version. It also includes two main test cases for them in the test-suite.hs file.

Another big implementation for this branch was that it also includes a fix for i227 (the second link). We decided to define a rule for: all elements without a span must have a parent ID of "". While all elements with a span could not have a parent ID "", and all their parent ID's had to be unique. I then made a generator to generate unique PID's for thoes elements without PID, and added a test case to check all the above.