Make Attributes Immutable #80

Finish making a lot of code in the Intermediate immutable, including
Attributes.

Fixing tests for this.

This does not include type checking of attributes.

This does not yet distinguish between an attribute that is missing and
attribute that is set but not expected. The number of exceptions to be
listed in "throws" would grow large, and may need to be rethought.
Hmm, I really don't see that being anything more than a wrapper for this `Map`...