ATS (Apache Traffic Server) JA3 Fingerprint Plugin

General description
--------------------
1. JA3
This plugin looks at all incoming SSL/TLS clientHello and calculates JA3 fingerprint for each client.
It then performs
1) logging JA3 string and its MD5 hash to `ja3_fingerprint.log` in the standard logging directory;
2) appending `X-JA3-Sig` and/or `X-JA3-Raw` headers to upstream request (depending on the config)

The log file format is as follows:

[time] [client IP] [JA3 string] [MD5 Hash]

2. Plugin Configuration Options
The following optional arguments can be used to configure the plugin's behavior:

Add flag --ja3raw if `X-JA3-Raw` is desired in addition to `X-JA3-Sig`.
Add flag --ja3log if local logging in standard logging directory is desired.
Add flag --modify-incoming if it is desired that the plugin modify the incoming
    client request headers rather than the sent (proxy) request headers.
    Regardless, the origin will receive the configured `X-JA3-*` headers. Using
    this option allows other plugins that are configured later than
    `ja3_fingerprint.so` in the `plugin.config` file to see the `X-JA3-*`
    headers as if they were sent by the client.  This option is only applicable
    for ja3_fingerprint configured as a global plugin (i.e., a `plugin.config`
    plugin) not as a remap plugin.  This is because remap plugins by definition
    are enaged upon remap completion and by that point it is too late to
    meaningfully modify the client request headers.
Add flag --preserve for situations where there may be multiple proxies
    handling a request and the first one, the one closest to the client, is
    the one whose ja value is the most useful. If --preserve is used, then ja
    values are not appended to already existing values in the request. By
    default, ja header field values are appened if one exists already.

3. plugin.config
In plugin.config, supply name of the plugin and any desired options. For example:

ja3_fingerprint.so --ja3raw --ja3log

4. remap.config
This plugin can alternatively be used as a remap plugin. For each remap rule,
add plugin and parameter field. For example:

map http://from.com http://to.com @plugin=ja3_fingerprint.so @pparam=--ja3raw @pparam=--ja3log

The plugin is not designed to function as both a global and remap plugin, so
choose one configuration or the other.

5. Requirement
Won't compile against OpenSSL 1.1.0 due to APIs and opaque structures.
