improved reflection support

The object being examined can now be a Map or an Array.
Arrays should work identical to Slices and are not that interesting.
Maps however are more interesting as keys can be a variety of types
beyond that which JSON/JSONPointer support.
This implementation allows numeric values (int/uint/float) to
operate both when querying and when listing pointers.

Consider the following exmaple:

x := map[int]string{
  36: "marty"
}

y := Reflect(x, "/36")

Here we would expect y to be the string "marty".
Some reflect benchmarks