Overhaul of OS fingerprinting with Recog support

This reimplements much of the OS fingerprinting within the Metasploit Framework. Client-side and server-side fingerprints can now take advantage of [Recog](https://github.com/rapid7/recog) and the Recog-enabled MDM gem. 

The changes are backwards-compatible, but they do change how os_name and os_flavor fields are handled. Previously, an OS match of "Windows XP" would be split into an os_name of "Windows" and an os_flavor of "XP". The new code would treat os_name as "Windows XP" and save os_flavor for the product edition (Home, Pro, etc). This change is cosmetic and mostly transparent given how most callers treat these fields (they merge them together for display).

Past 1.0.0, '~>' should only be used up to the MINOR version and not PATCH because semver2 states that MINOR must be compatible API changes while PATCH is compatible bug fixes.  Therefore, this should be `spec.add_runtime_dependency 'recog', '~> 1.0'`.  Using ~> on PATCH is only necessary pre-1.0.0 when MINOR indicates incompatibilities and PATCH indicates compatibility.