search docs/test/fix tapname-search

This is the promised followup to #2496
- docs
- test
- bugfix: search string was being tested against fully-qualified
  Cask name including Tap, so "brew cask search phinze" would
  (confusingly) return all Casks.
BUGFIX: readlink requires chdir for relative links

Fixes #2650 (although there is more work to be done).  The issue is that
path.readlink.exist? returned false for all relative links, because readlink
reads relative to the current working directory.  This caused relative
symlinks such as /usr/bin/tar to be deleted, because package mosh identified
/usr/bin as one of its container directories.

The simplest fix is not to use readlink at all, because path.exist?
will tell us what we want to know, independent of current dir.
Merge pull request #2670 from rolandwalker/relative_readlink_safety

BUGFIX: readlink requires chdir for relative links
screensaver spelled screen_saver in DSL and opts
Merge pull request #2702 from rolandwalker/screensave_spelling

screensaver spelled screen_saver in DSL and opts
Merge pull request #2545 from rolandwalker/search_followups

search docs/test/fix tapname-search
add os_version_only to caveats DSL