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.

Additionally, forward and backward flow analyses have been updated to
support the new CodeBlock API.  Furthermore, live variables and constant
propagation have been updated accordingly as well.  In the case of
constant propagation, a decision was made to strip out the "alias
analysis" which was additionally being performed by ConstantPropagation.
This should either be removed altogether, or reconstructed in separate
transform.