g_option_context_parse() modifies the argv given to it, so g_strfreev()
called during the cleanup cannot free all the strings that have been
duplicated by g_strdupv(). Make a second, shallow copy of the array, and
use that to free all the strings that were duplicated.
Change-Id: Ifcb31cb5e6141a1e15de47e11ab800c9d3e0ab10