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
Also, I would name this function `execute`.  Calling it dispatch might make people think this action will be sent to dispatcher again.