MDM 0.17.2 - 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).

The version number was bumped to 0.17.2 in order to make the corresponding [Framework PR](https://github.com/rapid7/metasploit-framework/pull/3373) easier to manage. 
This probably needs something like `\d+(?:\.\d+)` to handle `8.1`
e.g.:
```ruby
/(XP|Vista|\d+(?:\.\d+)?) (\w+|\w+ \w+|\w+ \w+ \w+) Edition/