maint: fix type in SimpleRPC Intro
20233 - Make filters functions idempotent

This commit makes the filter functions in the rpc client idempotent.
20233 - Make filters functions idempotent

changelog
21104 - reply defaults should be cloned copies from the DDL

Previously we copied the default values from the DDL directly
into the reply structures for the data and agents.

This opened us up to edge cases where the cached copy of the DDL
could be modified for example:

Given a DDL file with:
    output :foo,
           default => "foo"

And an Agent with:
    action x do
       reply[:foo] << "a"
    end

The default in the DDL will become 'fooa'.

We could freeze the default but if the default was a hash or nested
hash we'd need to do nested freezez which might not really solve things
either as not everything supports freezing and there's just too many
edge cases.

We now just use Marshal to deep clone the defaults out of the DDL into
the agent and data replies, this avoid the problem completely at the
expense of some performance