Add match method to blocks

Single parameter blocks are now patterns, with a match method that
defers to that parameter's pattern, allowing a test to see if an
application of that block will work for a certain argument. Blocks which
have no or many parameters raise an exception if you try to match
against them.