WyIL: Removing attributes from Code.Block.Entry.

Attributes were previously associated with all bytecodes through the
class Block.Entry.  This provided a convenient way of associating
attributes with bytecodes.  However, the class Attribute.Map is the new
way of associating attributes with bytecodes.  To make handling of this
easier, I have also created an AttributableBlock which is very similar
to the old notion of block.  This has zero or more Attribute.Map
instances inside, and manages the mapping from bytecodes to attributes.

The new Block.Entry does not have any attributes associated with
it.  However, the sister class AttributableBlock.Entry does.  This
provides a convenient interface to access the attributes of bytecodes
inside nested blocks and, potentially, to update them (though this isn't
implemented yet).

To make the code compile, I have have stripped out a lot of stuff related to the expansion of types.
This has all been put into a new transform called TypeExpansion, which
currently is completely broken and I will need to fix up later.