Refactor :search to remove code duplication and name shadowing
EitherErr Applicative for Functor-Applicative-Monad_Proposal
fix compatibility with optparse-applciative 0.10
  - the `option` API is changed
  - `execParserMaybe` is deprecated
Try symmetry of equality in :search
Fix logical error in :search's unification resolution
Annotate several top-level functions
Remove unnecessary import
Merge branch 'suhorng-master'
Merge pull request #1504 from Heather/eithererr

EitherErr Applicative for Functor-Applicative-Monad_Proposal
Merge pull request #1505 from tac-tics/top-level-annots

Annotate several top-level functions
Merge pull request #1507 from bmsherman/improveSearch

Symmetry of equality (and small fix) for :search