Minor edits
WyIL: Removed Block.numInputs() #442.

Removed the function Block.numInputs() as part of the process
for introducing proper nested blocks.  This required functions be
modified to pass the number of inputs through as parameters.  Also, the
numSlots() function relied on numInputs() and, hence, this was updated
and some referencing code needed tweaking to work.
WyIL: Added formal notion of Bytecode Attribute

The notion of a bytecode attribute is a chunk of data which is
associated with some aspect of a WyIL file.  In particular, an attribute
map is one which associates data with individual bytecodes.

Initially, I have added various kinds of default attribute.  In
particular, the SourceLocation is an attribute used to associate a
bytecode with a location in the originating source file.  Likewise, the
SouceLocationMap is an instance of Attribute.Map and is used to
associate a block of bytecodes with their source locations.

To simplify implementing Attribute.Maps, I have created an
AbstractAttributeMap class which provides most of what you would need.

Furthermore, the class Code.Block now only contains bytecodes.  The class
Code.AttributableBlock permits bytecodes to be attributed using zero or
more attribute maps.
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.