allow casks to support arbitrary blocks

this allows us to experiment with behavior that we may not want to
promote to an official feature just yet.

i'm thinking about stuff like #544, and other things i can't foresee

we'll have to be careful to not let this get out of hand, but i think
it could be helpful for cask authors to be able to try and problem solve
locally.
Merge pull request #1949 from phinze/arbitrary-block-support

allow casks to support arbitrary blocks