refactor http, validation and change events to separate plugins

the diff is gonna be a little useless on this one, since i started fresh in a separate repo to begin with. but the goal here is to refactor the core of `model` to make it completely pluggable. i've move lots of the logic that used to be here into three different plugins:

- [`model-change`](https://github.com/component/model-change) for change events
- [`model-validate`](https://github.com/component/model-validate) for validation
- [`model-http`](https://github.com/component/model-http) for the HTTP transport

this has been talked about being done in a #12 #17 #19 

note that this is a breaking change, but i think it's a good one, and worth a bit of pain because we end up with a pretty nicely pluggable system that we can build anything on. open to critique in case you think anything in the new version could be improved

@MatthewMueller @TooTallNate @yields @visionmedia @timoxley @jonathanong