Reimplement HTTP fingerprinting, backwards compatible

This commit changes the internals of HTTP fingerprinting to store
a whole trove of data about the HTTP response using a hash. The
current API is backwards compatible and has been tested with a
number of modules that depend on HttpFingerprint being sent.

In addition, this change paves the way for advanced fingerprints
that take advantage of the HTTP body and other headers. This is
a requested addition documented  across various module comments.

Finally, this commit completes the closed loop for OS identification
by connecting MSF to MDM to Recog and applying Recog databases for
HTTP Servers, HTTP Cookies, and HTTP Authentication headers to the
results of HTTP fingerprinting runs.

For example, with the appropriate version of MDM/Recog in place,
a http_version scan of Microsoft-IIS/7.0 server will update the
host.os_name field to 'Windows 2008'.
Prevent duplicate signatures by using http_fingerprint() without args
Store at most one http.fingerprint per host/port, revert http_version
Refactor and integrate smb_fingerprint() for Recog support
Remove obsolete call to update_host_via_sysinfo()
Update report_host() to match os_* field changes

This is part of a bigger change to normalize what os_name, os_flavor, and
os_sp actually mean. To summarize the changes happening in Mdm:

1) The vendor name is being removed from os_name
  * "Microsoft Windows" -> "Windows 7"
2) The os_flavor field is being used for the edition of the os_name product
  * "7" -> "Enterprise"
3) The os_sp field specifies a version if known and nothing if not
 * "SP0" -> "", "Service Pack 2" -> "SP2", etc
Small tweaks, see 4611d0a8d0141d4d134b83961374e91feb593e27
Report a fingerprint instead of overwriting host.os_name
Rework OS fingerprinting to match Recog changes

This commit changes how os_name and os_flavor are handled
for client-side exploits, matching recent changes to the
server-side exploits and scanner fingerprints.

This commit also updates the client-side fingerprinting to
take into account Windows 8.1 and IE 9, 10, and 11.
Point gemfile to the dependent git repos in github vs local
Report fingerprint.match notes, various cleanups
Fix up two modules using the old os_flavor definition
Fix use of os_flavor to ensure correct target matching
Fix usage of os_flavor for target matching
Fix use of os_flavor for targeting
Fix up host.os* field usage in the enum_ad_computers module
Do not blindly overwrite host fields, report fingerprint.match instead
Refactor host/note reporting for the jenkins module

This prevents this module from blindly overwriting the host
fields and instead reports the information as a note that can
be used by the fingerprinting engine. Additionally, consolidate
all jenkins data bits into a single note vs a dozen.
Use a string match vs regex for Android as the OS
Fix a typo in the nexpose raw importer