Major refactor of dispatch path and store interfaces

* [resolves #17] Make all dispatching paths synchronous
* Store constructor now receives only single parameter:  `dispatcher`
    * `dispatcher` is a proxy interface to the real dispatcher with access to the following functions: `waitFor`, `getStore`, and `getContext`
* `initialState` will now be sent to a `rehydrate` function if it exists instead of constructor
* `context` will no longer be dehydrated along with the dispatcher, shoud be handled outside of dispatcher
Similar to https://github.com/facebook/flux/blob/5bb67ab12b2ccda0fe6816220a6e056a5b46df9b/src/Dispatcher.js#L216