Renamed Block to ConcreteBlock.
Added new Block struct.
Added BlockArguments trait.
Implemented BlockArguments for empty tuple.
Implemented Message and a copy method for Block.
Refactor ConcreteBlock to have a base Block.
Made creating ConcreteBlocks safer.

Instead of supplying an extern fn, a simpler native rust fn is supplied
and the BlockArguments trait is used to get an extern fn that wraps it.
Implemented BlockArguments up to 12-tuple with a macro.
Implemented Deref to Block for ConcreteBlock.
Added more block tests.