Previously, using the %O specifier implied on recursing indefinitely
on the object being formatted. For large and complicated objects,
this behavior may not be desirable.
With this change, the recursion depth can be controlled through the
precision flag. If the flag is not specified (`%O`) or set but no
precision is specified (`%.O`), it will, as currently, recurse
indefinitely. Otherwise (e.g. `%.2O`), it will recurse that many times
in the object.
The %O specifier automatically outputs the all properties of the
object being formatted, both enumerable and non-enumerable. This
change introduces a new specifier, %A, which is identical to %O,
except by only printing the enumerable properties of the object.