remove special properties of `caskroom_only`

HOLD until #4865 is merged.

After #4865, `caskroom_only` can be subclassed from Cask::Artifact::Base
like any other artifact.  It no longer has the special property of
making `uninstall` stanzas work.

This stanza has never been documented.  It is possible that it will
no longer be needed, after #4865 and subsequent cleanup on Casks that
use this form.

References: #4688
DSL: allow `version :latest` (symbol not string)

Forward-compatibility. Intentionally not documented.  When
version is a symbol, it may only be `:latest`.

References: #4688
add `gpg` stanza to DSL

For forward compatibility.  The stanza has no effect, and is
intentionally left undocumented at this time.

References: #4688
recast manually_uninstall method

as dispatch_uninstall_directives
pass stanza by name to dispatch, instead of set

the set contains the uninstall directives from the DSL,
possibly more than one artifact
change hardcoded "uninstall" in msgs to stanza var
recast uninstall_set as directives_set
recast uninstall_options as directives
promote `:uninstall` to an independent artifact

- separated from class `Cask::Artifact::Pkg` (the `:uninstall` DSL key)
- `:uninstall` can now be invoked for all Casks
- `uninstall_test.rb` also had to be separated from `pkg_test.rb`
recast install/uninstall methods: `install_phase`

and `uninstall_phase`, to improve clarity, now that we have an
independent `uninstall` artifact.
refactor dsl_test.rb into named sections
Extend `appcast` stanza to support multiple keys

- `:sha256`
- `:format` (default is `:sparkle`)
- `:latest_version` (experimental, may be removed)
tests for `appcast` stanza
Add `depends_on` stanza to DSL.

For forward-compatibility, intentionally undocumented.  Currently
works only as a synonym: `depends_on :formula` substitutes for
`depends_on_formula`, which is intended to be removed.

However, this PR also provides additional `depends_on` keys for
future expansion of functionality:
 - `:cask`
 - `:macos`
 - `:arch`
 - `:x11`
 - `:java`

The symbol names were chosen to match those used in Homebrew Formulae.

References: #4688, #2001
Add `license` stanza to DSL

References: #4688.

For forward-compatibility; intentionally left undocumented.

The `license` stanza is not free-form.  There is a limited
set of valid symbols, of which the argument must be a member.
(The set will later be documented, and probably needs amendments.)

Version numbers and variants of licenses are intentionally
ommitted.  The use-case for `license` is filtering and listing
of Casks. We want to avoid becoming a detailed repository of
application descriptions: that information can be found at the
`homepage` URL.
Merge pull request #4865 from rolandwalker/allow_all_uninstall

DSL: allow all Casks to use `uninstall` stanzas
Merge pull request #4866 from rolandwalker/demote_caskroom_only

DSL: remove special properties of `caskroom_only` stanza
Merge pull request #4847 from rolandwalker/extend_appcast_stanza

DSL: extend `appcast` stanza
Merge pull request #4849 from rolandwalker/version_symbol_latest

DSL: allow `version :latest` (symbol not string)
add `zap` stanza to DSL

The zap functionality here is in working form, but there is not a
corresponding `brew cask zap` command verb, which is to be supplied
in a separate PR.

Like other forward-compatible DSL extensions, it is intentionally
undocumented.

References: #4688