working version + lots of cleaning & simplifying

before we had:
Block{BlockTemplate, BlockRoutine}
BlockTemplate{}
BlockDefinition{BlockTemplate}

now we have:
BlockTemplate{} (contains unchanging variables defining block)
Block{BlockTemplate{}} (contains instance specific variables as well as unchanging vars)

before blockroutines accepted blockdefinitions
now they accept blocks

before library had blocks, now it has blocktemplates.

so essentially the process is:
ask library for a template. make a block by adding & creating instance specific vars, send block to blockroutine.

I knew there was a problem when I was pondering about creating BlockDescription{}

library looks a lot better too, no longer double definition of block names.