Redo of Building code (with echoes)

Basically, there was way too much repeated code (or rather, *nearly*
repeated code) in the Building class - literally a hundred different
forms of accessors and mutators and blah blah blah.

So the current state of a square now has two facets (interaction type
and availability type); the latter is either AVAILABLE, MARKED, or
IN_USE, which all have obvious meanings.  The former can vary and should
be extensible.

More importantly (and relevantly) virtually all of the external methods
now take an InteractionType as a parameter.  Most methods pretty much
ignore it (except to check that it's the prescribed value), though a few
do switch on it (e.g. receiving objects).

This caused a cascade of code changes but they're pretty routine.