Implement memory shallow-izing

The general idea here is that DREAMER only has 1024 words on a tile,
so we need to split memories up in order to fit.  This code takes big
memories and converts them into a number of smaller memories.  The
"--depth" parameter determines how large of a memory is supported.