Replicate method changes

Track changes that occur to methods after initialization and include them in the replication state. Deconstruct `function` objects that have been synthesized at runtime into JSON-serializable representations.

This is a new pull request off of `development` now that the `branch/kernel-listeners` dependency has been merged.

@eric79, the actual replication bits are missing still, but this is good to start reviewing.

I don't think I really understand what is happening here.