Add a --recurse-objects flag

Including --recurse-objects enables recursive find/replace into objects.

This change also detects cycles in objects and arrays. If a cycle is
detected, or the XDebug max nesting level is reached, the function stops
recursing
Update documentation header for recursive_unserialize_replace
Update array handling for safer recursive replacements
Move recursive search-replace function to Utils and add unit tests
Merge pull request #951 from CodeAwhile:recursive-search-replace