Add --timestamp: Try to preserve modification time (PORT)

Try to preserve the file modification time (as returned by the server,
if any). Using this option will cause the program to change the
modification time of the file to that of returned by the server.

NOTE: libcurl will parse this value from the returned "Last-Modified"
      HTTP header. This header may not always be present in which case
      the program will quietly ignore this option.

Ported from maint-0.7:
* Add --timestamp: Try to preserve modification time (357e4acff)
* DOC: cclive(1): Document --timestamp (4799c210b)

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
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>