[RFC] First draft of plugin interface design

@csavage-mdsol @sheavalentine-mdsol please review (not now. when you're actually at work).
This seems to imply that
```ruby
c1 = Farscape::Agent.new('http://example.com/my_api')
c2 = Farscape::Agent.new('http://example.com/some_other_api')
``` 
will make c1 and c2 equal.  I assume you don't mean this.