Rewrite human-explainers

 * Rewrite human-explain as a walker
 * Add a HumanExplain protocol
 * Extend the HumanExplain protocol over the core Schema types

This allows us to leverage schema's schema walking in order
to explain composite schema errors without having to walk the
schema ourselves.