Overhaul of normalize_os() with Recog support

This reimplements MDM::Host.normalize_os() in order to leverage the [Recog](https://github.com/rapid7/recog) fingerprint database. 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). [Framework PR](https://github.com/rapid7/metasploit-framework/pull/3373)