[agent] Only patch deps once

I think it's likely that if Backbone is set on the window and passed through define, we'll attempt to patch it twice. 

If you use the new `start()` method we could try to patch it twice.

If you use `localAgent` and `agent` we'll try to patch it twice.

all of these things are bad and we should guard against them. This does that