"Support" shallow memories

Note that support for these shallow memories was actually there
before, it's really just that the code never checked for memory depth
at all.  Now you can specify the maximum memory depth and this code
will bail out if any larger memories are used.

This also contains unimplemented code for splitting memories in order
to match the largest depth supported by a particular machine.
Don't output wide memories

This makes extra-special sure not to output memories that are deeper
than the target supports.
Add a shallow_node class

Now we've got wide_nodes, which contain narrow_nodes, which contain
shallow_nodes.  The idea is that this deals with the three levels of
mapping: wide are uncanstrained, narrow fit in width, and shallow fit
in depth (and width).

This should let me transparently handle memories that are both too
wide and too deep to fit on a DREAMER tile.
Fix integer-multiple narrow/shallow nodes

My logic for calculating the width/depth of the last narrow/shallow
node was wrong and produced 0 because of a MOD.