Extract normalize_facts from get_fact and make recursive

In dealing with structured facts we need to recursively transform all
non-string scalars to strings, while preserving the hashes and arrays.
test the extracted test_fact_value with the same tests
add tests that ensure comparisons are numeric

With a string-wise comparison "100" > "2" yields false (because "1" > "2" is
false and you can shortcut out)

Here we add some additional testing to check that the automatic conversion did
work, and not that "1" > "2".
Add a fact_data plugin

This plugin exposes the walking of structured facts to the compound query
language.

   ./mco ping -S 'fact("foo.bar").value=baz'

We split the parameter into path components on the '.', and then recursively
walk from the root facts down, by hash key or array index.