Improve cc:options (complete rewrite)

This rewrite addresses some of the inefficiencies of using the
Boost.Program_Options.

Notable changes:

* Add a workaround for the Boost.PO "error: multiple occurrences" bug
  - Some versions of Boost (confirmed: v1.49) PO do not provide the
    option name with the "multiple occurrences" error.

* cc::options now checks and warns if the option is deprecated

* Improved option grouping which benefits the --help output

* More informative parser error messages that indicate:
  - If the error occurred while parsing the config or cmdline
  - If value (e.g. type) validation failed

* The use of "flags" (added in v0.7.12) was replaced with
  .bool_switch() and .as<bool>()

* A short-option name was added for for-each option

* cc::options is now header-only

Backwards-compatibility breaking changes:

* --update-interval now accepts integers only

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
internal.h: Add Boost.PO version check, if(n)_optsw_given macros

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
Add cc::error (cc/error.h)

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
Update cc/curl.cpp for rewritten cc::options

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
Update cc/exec.cpp for rewritten cc::options

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
Update cc::file for rewritten cc::options

Other:
* Leave CURLOPT_MAX_RECV_SPEED_LARGE for curl_setup
* Rely cc::options for setting default values (e.g. --tr)

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
Update cc::get for rewritten cc::options

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
Update cc::input for rewritten cc::options

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
Update cc::progressbar for rewritten cc::options

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
Update cc::application for rewritten cc::options

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
Update util.h for rewritten cc::options

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
Update quvi::query (of compat) for rewritten cc:options

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
main: Use cc::error, catch cc::options::exit_program

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
[DOC] --stream: Add missing "config:"

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
[DOC] Move --progressbar, --update-interval to Output section

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
[DOC] Move --agent to Network section

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
[DOC] --update-interval: Accepts now integers only

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
[DOC] --retry-wait: Add a note about value 0

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
[DOC] Add new option short names

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
[DOC] Core: Reorganize options into alphabetical order

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>