Detect identity conversion in toDynamic
Summary:
D4499520 added typedefs to `dynamic` which made it start matching
tests for ranges/containers. However, the typedefs are unconditional on the
actual contents of the `dynamic`. This made toDynamic(dynamic) select the
range-based conversion operator, always, which immediately asserts when
trying to do range-based iteration over an Object or a primitive. Add tests
to the converters that enable/disable depending on whether the object is
already a `dynamic` and early-out in that case.
Reviewed By: mzlee
Differential Revision:
D4538617
fbshipit-source-id:
f3a5aafab07946a221dcead782fc27de51afa0a6