Expand watchStores property to apply to state as well

In a larger app, it becomes inefficient to iterate over, and apply state from every store in your application, to every view  with the storeListner mixin.
This fix will use the watchStores property instead (when defined). This means that at no point will all stores be iterated over when a component provides a watchStores property. It also means that stores with a watchStores property will not get any state from stores not listed (which should be fine, since if a component cares about a store's state, it will also want to watch for changes).
I also took this opportunity to optimize the getStoreStates method, which was doing some excessive checking and not taking advantage of local variables.
Merge pull request #45 from deloreanjs/expand-watchStores

Expand watchStores property to apply to state as well