Refactored bootstrapping

If a guard fails because a different closure is called than the one that was recorded, or if a closure is called with a different number of arguments, the guard-failure process (execute an existing guard-trace or start tracing if one doesn't exist yet) is the same as regular guard-failures