explicitly ensure that coerce is *not* a reference to something

With the change from hashref to arrayref in MX::CoercePerAttribute 1.000, the
stringification heuristics changed enough to throw off our constraint check.
We now explicitly check to ensure that coerce is not a reference before trying
to do anything with it.

So that was a fun bug to diagnose.
move CoercePerAttribute functionality over directly

We were only documenting and using a subset of it, and with the recent changes
we need to keep a tighter control over it.  This will also allow us to refine
how we handle this down the road.