Allow caching to be disabled for individual metafunctions.

A metafunction with the #:cache-poison keyword will not have its results
cached. Other metafunction results which depend on an uncached
metafunction are also not cached. Some of the parsing logic in
split-out-contract is changed to allow the keyword to be checked more
easily. The metafunction structure has an additional boolean field
indicating whether its results should be cached.