caveats first-class in DSL, gets own mini-DSL

Make `caveats` a first-class member of the Cask DSL.  It no longer has to
be specified with `def caveats`, but can be given as `caveats do ... end`
as with `after_install` blocks.

In addition, create a mini-DSL which can be used within `caveats` blocks,
providing standard messages when manual installers must be used,
reboot-required, etc.

Add alternate form: `caveats` can also accept a compile-time string for
simple cases.

This is 99% compatible with old Casks, as it still works by defining
a `caveats` method.  However, all Casks containing `caveats` are cleaned
up and adapted according to the new DSL.

Full docs in `CONTRIBUTING.md`.

The purpose is to make things easier for Cask authors, as well as to provide
a framework to address issues such as #2350, or the need to login/logout as
discussed in #2416 (because artifact type cannot always predict which
caveats are needed).