Rewrote a lot of the internals:

 * Uses cloning
 * There is no longer a "block"
 * level.json can contain any of the fields blocks.json can have