Initial OpenSSL BIO implementation, to be used to limit socket I/O 
and remember raw data during peek phase of Peek and Splice.

No buffering yet: All SSL read/write commands go directly to the socket,
which probably creates some performance overhead because they use very
small I/O sizes (often just a few bytes).

Useful SSL connection state and I/O debugging.

Moved SSL connection creation and I/O association code into new Ssl::Create(),
used by client_side.cc and forward.cc.
Squid BIO related fixes

- Do not close the filedescriptor inside Ssl::Bio::~Bio() destructor
  The callers do conn->close()
- Fix the BIO_CTRL_DUP control command to return 0. This command
  duplicates the current bio. It should be implemented if the SSL_dup
  OpenSSL function used anywhere inside squid.
Hello forwarding patch

Patch general description:
  - Adds the peek-and-splice SSL bumping mode.

  - The squid client side read the ssl client hello message. At this time just
    buffer the hello message and does not pass it to openSSL subsytem.
    The SSL-client-to-squid connection pauses here.

  - Squid extracts the ssl client hello message features and configure the
    squid-to-SSL-server SSL context to have the same features

  - Squid sents the SSL hello message to SSL server and gets the response.
    At this time just buffer the SSL server hello response and does not pass it
    to openSSL subsystem. The squid-to-SSL-server connection pauses here.

  - Squids decides (at this time always) to bump the connection, so it starts
    the squid-to-SSL-server connection. The connection to SSL server
    established.

  - Squids gets the server certificates, builds new based on these certificates
    and configure the SSL-client-to-squid SSL context with the generated 
    certificates, and allow the client hello message to enter openSSL subsystem
    and establish the SSL connection with the client.

Technical details:
  - client_side.cc:
     The clientNegotiateSSL split in to two functions the clientNegotiateSSL and
     Squid_SSL_accept, to support the new "pause SSL connection" feature.
     Add three new ConnStateData methods (startPeekAndSplice, startPeekAndSpliceDone
     and doPeekAndSpliceStep) to control SSL-client-to-squid connection pause/start.

  - forward.cc:
    Add code to the FwdState::initiateSSL method to retrieve SSL features from
    client SSL hello message and configure the SSL connectio with the SSL
    server.
    A new method added, the FwdState::checkForPeekAndSplice which called for
    peek-and-splice SSL bumping mode to decide if we need to splice or bump
    the SSL connection.

  - ssl/bio.cc, features added:
    Ssl::ClientBio: Read and buffer the hello message
    Ssl::ServerBio: Hacks the openSSL hello message while the message sent to
                    the server.
                    Buffer the SSL server hello message response
    Ssl::Bio:sslFeatures: A new class which is able to extract and store SSL
                    features from SSL openSSL objects, or from raw SSL hello
                    messages.
Initial changes to streamline copyright declarations in Squid sources
and related metafiles. No functionality or licensing changes are intended.

Once completed, the changes will consistently declare Squid contributors
(listed in CONTRIBUTORS and represented by the Squid Software Foundation) as
Squid copyright owners while referring the reader to the COPYING file for GPL
licensing details. The boilerplate with the above information is provided.

These changes do not affect copyright rights of individuals or organizations.
We are simply confirming the fact that there are many Squid copyright owners,
just like there are many Linux kernel copyright owners. We are also providing
a simple, consistent way to document that fact.

In this particular commit:

* Enlarged CONTRIBUTORS file scope to include all Squid code contributors, not
  just individual volunteers. Added known organizations that contributed Squid
  code. We could have two separate files for individuals and organizations,
  but there is probably no difference between the two as far as copyright is
  concerned so why complicate things?

  Ideally, it would be best to isolate non-code contributors (or, to be more
  precise, contributors without copyright claims) from the rest of the group,
  but doing so is impractical at this point IMHO. We do not state that all
  listed contributors have a copyright claim on Squid so our statements remain
  correct, albeit not precise.

* Fixed SPONSOR[.list] scope to include those who funded development. The
  file entries already included many such sponsors but the preamble excluded
  them. If some of those sponsors retained copyright for the developed code,
  they should be also listed in the CONTRIBUTORS file. More work is probably
  needed to make the latter true as I could only audit entries I know about.

* Explicitly defined CREDITS file scope. Removed Squid copyright/licensing
  statement from that file as out of scope (parts of it belong to README,
  COPYING, and boilerplates). Polished Harvest/cached entry description,
  removing no longer valid URL (that is still mentioned in the Harvest
  license, which is preserved "as is", of course).

* Removed COPYRIGHT file. It was very stale, non standard (GNU uses COPYING),
  and inaccurate. The Regents of the University of California, a rightful
  Squid co-owner have been moved to the CONTRIBUTORS file. Historical facts
  about UCSD and NSF NLANR grants is already available in the SPONSORS file.

* Updated README with the standard boilerplate text. That file needs more
  polishing work outside this project scope.

* Fixed custom scripts/formater.pl boilerplate.
A script to add or update C/C++ boilerplate.

Needs more work to handle more common cases.
Handle all common boilerplate cases in src/,
leaving about a dozen known exceptions.

Report copyright-related claims if a recognized boilerplate containing them is
going to be replaced with a standard one. These claims should then be cross
referenced with CONTRIBUTORS and CREDITS, updating those files if needed.
Boilerplates should not contain variable information, such as individual
copyright claims.

Leave DEBUG section information as a separate comment.

Improved error reporting.
Adjusted unusual boilerplates to allow scripts/source-mangler.pl to update them
automatically.

The script tries to be extra careful and skips what it feels may be a custom
boilerplate that requires a manual intervention. The cases handled by this
commit are simple, non-controversial ones.
Fixed detection of various custom lines around "numerous individuals" boilers.

Recognize more custom lines inside boilerplates.

Recognize multi-author lines with a single AUTHOR prefix. Split multi-author
claims (does not fully work in a few some complex cases, but that is OK).
Cleaned up reported claims a little.

Preserve "inspired by" comments when replacing their home boilerplates.
Handle more rare cases and polish.

Detect more suspected licenses in unusual locations. Do not warn when
adding a new boilerplate to reduce WARNING noise.

Report (C) claims to stdout, separately from the WARNINGs stream on stderr.

Improved whitespace handling.
Restricted script scope to boiler management. Polished description.
Added a boilerplate to allow scripts/boiler-mgr.pl to update it automatically.
Check whether there is another license _after_ we removed an old boilerplate
and skip such files as special cases.
Polished source code.
Do not preserve empty DEBUGs.
Polished warning.
Capitalize inspiration text because it looks like a sentence.
Added a third paragraph/sentence recommended by FSF for GPL-licensed programs.
Leave Copyright and (C) (but not AUTHOR-like) boilerplate lines in sources
except when we [think we will] have a permission to move them to CONTRIBUTORS.

If one Copyright or (C) line in the old boilerplate is preserved, then all
such lines are preserved.
merge from trunk
First implementation of do splice. Works only if the openSSL version of client and squid are the same and compiled to support similar set of features